2013-05-10 40 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>