我正在尝试创建一个带有标签的简单渐变,我可以在MKMapView上叠加。我查看了SO,看到我可以使用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上发生了这种情况,但它看起来并不像。
谢谢!
答案 0 :(得分:2)
角落底部没有白色。他们有下面的地图。以下是四个角,缩放600%:
设置图层的圆角半径时,您正在剪裁该图层。图层下面的任何内容都会显示您将圆形图层剪掉的位置。
在您的情况下,您已经剪掉了渐变图层的边角,因此下面的地图图层显示而不会与渐变混合。
您还需要剪切地图图层的角落。最简单的方法是在地图图层上设置相同的角半径。
答案 1 :(得分:0)
你包含这个头文件......
#import <QuartzCore/QuartzCore.h>
#import "QuartzCore/CALayer.h"
然后使用radius。
gradientLayer.layer.cornerRadius = 7.0;
答案 2 :(得分:0)
QuartzCore.framework
#import <QuartzCore/QuartzCore.h>
yourView.layer.cornerRadius = 12.0f;