首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CALayer setCornerRadius仍然在下面留下白色边角

CALayer setCornerRadius仍然在下面留下白色边角
EN

Stack Overflow用户
提问于 2012-09-20 13:50:16
回答 3查看 593关注 0票数 1

我正在尝试创建一个简单的渐变,上面有一个标签,我可以覆盖在MKMapView上。我观察了一下,发现我可以使用CAGradientLayer而不是覆盖UIView中的drawRect。我想我应该试一试。在我的viewDidLoad中,我这样做:

代码语言:javascript
复制
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上遇到过这种情况,但看起来不是这样的。

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-20 14:04:38

边角下面没有白色。他们下面有地图。这是四个角,放大了600%:

当您设置图层的拐角半径时,您就是在剪裁该图层。图层下的任何东西都会通过你裁剪掉的圆角图层显示出来。

在你的例子中,你已经剪裁掉了渐变图层的角,所以下面的地图层在没有与渐变混合的情况下就能显示出来。

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

票数 2
EN

Stack Overflow用户

发布于 2012-09-20 14:17:51

%r%u包含此头文件...

代码语言:javascript
复制
#import <QuartzCore/QuartzCore.h>
#import "QuartzCore/CALayer.h"

然后使用半径。

代码语言:javascript
复制
gradientLayer.layer.cornerRadius = 7.0; 
票数 0
EN

Stack Overflow用户

发布于 2012-09-20 15:14:01

添加

  • #import <QuartzCore/QuartzCore.h>

  • yourView.layer.cornerRadius = 12.0f;

  • #import <QuartzCore/QuartzCore.h>

  • yourView.layer.cornerRadius = 12.0f;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12506732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档