Iphone CALayer setCornerRadius仍在下方留下白色角

Iphone CALayer setCornerRadius仍在下方留下白色角,iphone,cagradientlayer,Iphone,Cagradientlayer,我只是想创建一个简单的渐变,上面有一个标签,我可以覆盖在MKMapView上。我观察了一下,发现我可以使用CAGradientLayer而不是在UIView中重写drawRect。我想我会试一试。在我的viewDidLoad中,我执行以下操作: CGRect frame = CGRectMake(self.mapView.frame.origin.x, self.mapView.frame.origin.y, 320.0, 44.0); CAGradientLayer *gradientLay

我只是想创建一个简单的渐变,上面有一个标签,我可以覆盖在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];
它在右边的路径上,除了左上角和右上角的下面是白色。这有什么原因吗?我想这可能是因为我没有设置图层的背景色或其他东西,因为我以前在UIViews上遇到过这种情况,但看起来不是这样


谢谢

角落下面没有白色。下面有地图。这是放大600%的四个角:

设置图层的角半径时,就是在剪裁该图层。该层下的任何内容都将显示您将圆形层剪开的位置

在您的例子中,您已经剪掉了渐变层的角,因此下面的贴图层将显示出来,而不会与渐变混合


还需要剪裁贴图层的角点。最简单的方法是在地图图层上设置相同的角半径。

R u包括此头文件

#import <QuartzCore/QuartzCore.h>
#import "QuartzCore/CALayer.h"
  • 添加
    QuartzCore.framework
  • #导入
  • yourView.layer.cornerRadius=12.0f
  • gradientLayer.layer.cornerRadius = 7.0;