2013-05-10 14 views
2

我只想将视图的形状从Square更改为Round。当我尝试与角落,但只是在角落里。因为我想把整个视图看成圆形。如何制作任意视图的圆形

+0

你是什么,如果不是边角意思? – 2013-05-10 05:27:22

+0

可能重复[如何制作圆形UIView](http://stackoverflow.com/questions/1878595/how-to-make-a-circular-uiview) – 2013-05-10 05:28:21

+0

因为,如果我们得到任何视图或imageview比,购买默认它的方形。那么我们如何才能使它成为没有角落辐射的圆形?就好像视图的大小非常高,那么它不是实际上具有角落辐射的圆形。所以我只想重新绘制视图并使其成形。 – Nirmalsinh 2013-05-10 05:34:33

回答

5

UIView始终是矩形。但是,你可以使它看起来看起来圆(或任何形状,实际上)与面具。为此,请制作一个黑色圆圈的UIImage(在透明背景中)。现在将该UIImage的CGImage作为CALayer的内容。最后,将CALayer设置为您视图层的mask

让我们假设你的看法是100×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; 
+0

有没有办法做到这一点(即,掩盖一个UIView,使其看起来像循环)在故事板,还是必须以编程方式完成? – Crashalot 2015-12-11 02:43:59

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是你的观点,你想要圆。

我希望它能帮助你。由于

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>