2011-07-29 146 views
8

看看下面的圖片:如何從UIButton控件中刪除尖銳的矩形邊緣?

enter image description here

正如你所看到的邊緣銳利的矩形,他們走出圓角按鈕。我怎樣才能不顯示邊緣,只顯示圓形按鈕?

UPDATE(解決方案):

我用下面的代碼來實現圓角:

UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.stopButton.bounds 
             byRoundingCorners:UIRectCornerAllCorners 
             cornerRadii:CGSizeMake(12.0, 12.0)]; 

// Create the shape layer and set its path 
CAShapeLayer *maskLayer = [CAShapeLayer layer]; 
maskLayer.frame = self.stopButton.bounds; 
maskLayer.path = maskPath.CGPath; 
// Set the newly created shape layer as the mask for the image view's layer 
self.stopButton.layer.mask = maskLayer; 

新的問題:

此代碼給我的startButtonRound.layer錯誤。 cornerRadius線。

UIButton *roundStartButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     roundStartButton.frame = CGRectMake(10, 10, 100, 20); 
     [roundStartButton setBackgroundImage:[UIImage imageNamed:@"green_gradient.jpg"] forState:UIControlStateNormal]; 

     roundStartButton.layer.cornerRadius = 12.0; 
UIBarButtonItem *startButton = [[UIBarButtonItem alloc] initWithCustomView:roundStartButton]; 

回答

17

你可以單獨使用的CALayer做到這一點:

CALayer *myLayer = [CALayer layer]; 
[myLayer setMasksToBounds:YES]; 
[myLayer setCornerRadius:5.0f]; 
[myLayer setBorderWidth:1.0f]; 
[myLayer setBorderColor: [[UIColor blackColor] CGColor]]; 
[myLayer setBackgroundColor: [[UIColor whiteColor] CGColor]]; 

您還需要包括QuartzCore框架,包括框架,你自己的頭。

#include <QuartzCore/QuartzCore.h> 

希望這有助於

+0

我嘗試過[button layer] setCornerRadius:5.0f];但它對按鈕沒有任何影響。 – azamsharp

+0

您可能需要將MasksToBounds設置爲yes才能讓圖層將其內容剪裁爲圓角。 –

+0

是否必須將UIButton聲明爲cornerRadius的IBOutlet才能使用?查看原來的帖子更新問題。 – azamsharp

5

我認爲所有可與實現:

self.stopButton.layer.cornerRadius = 12.0; 

但是你嘗試

self.stopButton.opaque = NO; 
self.stopButton.backgroundColor = [UIColor clearColor]; 

+0

謝謝比爾!這很好!我不知道我做了什麼,但現在甚至沒有角落Radius它沒有顯示邊緣。但是,您的代碼刪除了我的5-6行代碼,謝謝! – azamsharp

+0

UIButton.layer.cornerRadius不適用於我。它返回一個錯誤,但設置backgroundColor清除並將不透明設置爲NO。 – okysabeni

+0

@Yko,你是字面上使用'UIButton.layer.cornerRadius'嗎?這是(試圖)訪問類,而不是類的一個實例。 – bshirley

0

形成圖像的外觀,您已將UIButton背景顏色設置爲「白色」。使其「清除顏色」。