3

我只想将视图的形状从方形更改为圆形。当我尝试使用cornerRadious时,但它只是在拐角处。因为我想把整个视图做成一个圆形。

4

3 回答 3

6

UIView 总是矩形的。但是,您可以使用蒙版使其看起来是圆形的(或者实际上是任何形状)。为此,请制作一个黑色圆圈(在透明背景中)的 UIImage。现在获取该 UIImage 的 CGImage 并使其成为 CALayer 的内容。最后,将该 CALayer 设置为mask视图层的。

让我们假设您的视图是 100 x 100。然后(未经测试,但应该非常正确):

UIGraphicsBeginImageContextWithOptions(CGSizeMake(100,100), NO, 0);
CGContextRef c = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(c, [UIColor blackColor].CGColor);
CGContextFillEllipseInRect(c, CGRectMake(0,0,100,100));
UIImage* maskim = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

CALayer* mask = [CALayer new];
mask.frame = CGRectMake(0,0,100,100);
mask.contents = (id)maskim.CGImage;

view.layer.mask = mask;
于 2013-05-10T05:35:30.710 回答
2

您可以通过以下方式制作具有任何控件边框宽度的圆角边框:-

CALayer * l1 = [viewPopup layer];
[l1 setMasksToBounds:YES];
[l1 setCornerRadius:5.0];

// You can even add a border
[l1 setBorderWidth:5.0];
[l1 setBorderColor:[[UIColor darkGrayColor] CGColor]];


只需viewPopup用您的控件替换即可。

注意:-不要忘记导入<QuartzCore/QuartzCore.h>

于 2013-05-10T08:22:39.207 回答
1

试试这个代码: -

[roundView.layer setCornerRadius:50.0f];
[roundView.layer setBorderColor:[UIColor lightGrayColor].CGColor];
[roundView.layer setBorderWidth:1.5f];
[roundView.layer setShadowColor:[UIColor blackColor].CGColor];
[roundView.layer setShadowOpacity:0.8];
[roundView.layer setShadowRadius:3.0];
[roundView.layer setShadowOffset:CGSizeMake(2.0, 2.0)];

注意: -roundView 是您要舍入的视图。

我希望它对你有帮助。谢谢

于 2013-05-10T05:38:35.260 回答