我正在尝试创建一个简单的渐变,上面有一个标签,我可以覆盖在MKMapView上。我观察了一下,发现我可以使用CAGradientLayer而不是覆盖UIView中的drawRect。我想我应该试一试。在我的viewDidLoad中,我这样做:
CGRect frame = CGRectMake(self.mapView.frame.origin.x, self.mapView.frame.origin.y, 320.0, 44.0);
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.frame = frame;
gradientLayer.backgroundColor = (__bridge CGColorRef)((__bridge id)([UIColor clearColor].CGColor));
[gradientLayer setCornerRadius:12.0];
[gradientLayer setOpacity:0.5];
gradientLayer.colors = @[(id)[UIColor blackColor].CGColor, (id)[UIColor whiteColor].CGColor];
[self.view.layer addSublayer:gradientLayer];它在右边的小路上,除了左上角和右上角下面有这个白色。这是有原因的吗?我想这可能是因为我没有设置层的backgroundColor或其他什么,因为我之前在UIViews上遇到过这种情况,但看起来不是这样的。

谢谢!
发布于 2012-09-20 14:04:38
边角下面没有白色。他们下面有地图。这是四个角,放大了600%:

当您设置图层的拐角半径时,您就是在剪裁该图层。图层下的任何东西都会通过你裁剪掉的圆角图层显示出来。
在你的例子中,你已经剪裁掉了渐变图层的角,所以下面的地图层在没有与渐变混合的情况下就能显示出来。
你还需要裁剪地图图层的边角。最简单的方法是在您的地图图层上设置相同的角半径。
发布于 2012-09-20 14:17:51
%r%u包含此头文件...
#import <QuartzCore/QuartzCore.h>
#import "QuartzCore/CALayer.h"然后使用半径。
gradientLayer.layer.cornerRadius = 7.0; 发布于 2012-09-20 15:14:01
添加
#import <QuartzCore/QuartzCore.h>
yourView.layer.cornerRadius = 12.0f;
#import <QuartzCore/QuartzCore.h>
yourView.layer.cornerRadius = 12.0f;的
https://stackoverflow.com/questions/12506732
复制相似问题