创建一个圆角视图

6

您好!

我想让我的视图(在主视图中的视图)变成圆角。我尝试了以下方法,但是没有成功。有什么建议吗?

self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
    // Custom initialization
    currenView = [[UIView alloc] init]; 

    UIBezierPath *maskPath;
    maskPath = [UIBezierPath bezierPathWithRoundedRect:currenView.bounds byRoundingCorners:UIRectCornerAllCorners cornerRadii:CGSizeMake(30.0, 30.0)];

    CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
    maskLayer.frame = currenView.bounds;
    maskLayer.path = maskPath.CGPath;
    currenView.layer.mask = maskLayer;


}
return self;

1
你可以通过使用 layer 的 cornerRadius 属性来简单地实现它。 - Exploring
4个回答

13

试试像这样:

view.layer.cornerRadius = 5.0;
view.layer.masksToBounds = YES;

阴影效果:

view.layer.shadowColor = [UIColor blackColor].CGColor;
view.layer.shadowOffset = CGSizeMake(1.0f, 1.0f);
view.layer.masksToBounds = NO;
view.layer.shadowRadius = 5.0f;

请确保导入 <QuartzCore/QuartzCore.h>


在这行代码之后加入 view.clipsToBounds = YES。 - CRDave
2
那你为什么要实例化一个新的呢? - Stavash
2
如果视图已经在IBOutlet中,为什么还要使用“alloc,init”? - Exploring
发生的情况是这样的:当viewDidLoad被调用时,您正在为控制器分配一个不相关的UIView,该UIView被覆盖。那时故事板/xib视图被加载。很有可能您甚至没有看到在init方法中创建的视图。 - Stavash
还有一个问题:如何为这个视图添加阴影? - Pavel
显示剩余9条评论

2

以下是代码。分配并初始化一个视图,并将其发送到此方法以获得圆角。您可以选择任何想要的角进行圆角处理。此外,还可以设置阴影边框颜色。

-(void) setMaskTo:(UIView*)view byRoundingCorners:(UIRectCorner)corners withColor:  (UIColor*) color
{
 UIBezierPath* rounded = [UIBezierPath bezierPathWithRoundedRect:view.bounds  byRoundingCorners:corners cornerRadii:CGSizeMake(9.0, 9.0)];

CAShapeLayer* shape = [[[CAShapeLayer alloc] init] autorelease];
[shape setPath:rounded.CGPath];
shape.strokeColor = [[UIColor grayColor] CGColor];

view.backgroundColor=color;
view.layer.mask = shape;
}

像这样调用方法。

[self setMaskTo:ABCView byRoundingCorners:UIRectCornerAllCorners withColor:[UIColor greenColor]];

0

您的视图没有大小。它的宽度和高度都是0。尝试像这样做:

currentView = [[UIView alloc] initWithFrame:CGRectMake(0,0 200,200)]; 

然后应用

currentView.layer.cornerRadius = 8.0;
currentView.layer.masksToBounds = YES;
currentView.layer.borderWidth = 1.0; 

视图.layer.cornerRadius = 5.0; 视图.layer.masksToBounds = YES;视图.layer.shadowColor = [UIColor blackColor].CGColor; 视图.layer.shadowOffset = CGSizeMake(1.0f, 1.0f); 视图.layer.masksToBounds = NO; 视图.layer.shadowRadius = 5.0f;如果我这样做,角就变圆了,但是没有阴影。我认为问题出在视图.layer.masksToBounds = NO; - Pavel
对于阴影,请遵循stavash的解决方案。 - karim

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接