2016-02-17 33 views
0

我想設置頂部/底部左側角落的UIButton的半徑。我怎樣才能做到這一點?設置UIButton的TopLeft&bottomLeft半徑| iOS的

如果我使用button.layer.cornerRadius,它會設置所有的角落。

我使用UIBazierPath嘗試,但可能是我做錯了什麼和按鈕顯示不正確。我使用的代碼是:

let path = UIBezierPath(roundedRect: button.bounds, byRoundingCorners: [.TopLeft, .BottomLeft], cornerRadii: CGSize(width: 3.0, height: 3.0)) 

let mask = CAShapeLayer() 
mask.path = path.CGPath 
button.layer.mask = mask 

我試着從計算器即this的答案,但它不是爲我工作。它更新了角落,但也減少了按鈕的高度。我認爲我在框架/邊界上做錯了什麼。

使用上面的代碼中,UIButton的顯示爲:

.

我使用的另一種解決方案是具有圓角的使用的圖像。但現在我想以編程方式執行此操作。

謝謝。

-(void)setMaskTo:(UIView*)view byRoundingCorners:(UIRectCorner)corners 
{ 
    UIBezierPath* rounded = [UIBezierPath bezierPathWithRoundedRect:view.bounds 
               byRoundingCorners:corners 
                cornerRadii:CGSizeMake(8.0, 8.0)]; 
    CAShapeLayer* shape = [[CAShapeLayer alloc] init]; 
    [shape setPath:rounded.CGPath]; 
    view.layer.mask = shape; 
} 

調用上面的方法是這樣的::

[self setMaskTo:self.myButton byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerTopLeft]; 
+0

什麼上面的代碼的結果呢? –

+0

我已更新問題@ Mr.T –

+0

按鈕的角落似乎是圓形的。那麼問題是什麼? –

回答

2

沒有你的佈局變化

+0

寫作ViewDidLayoutSubviews固定的問題。 Thankyou :) @uchiha –

0

我已經使用下面的方法在客觀C++實現這一點?例如,如果您將代碼放在viewDidLoadUIViewController中,並且視圖會通過自動佈局重新調整大小,則可能會發生這種情況。如果你將代碼移動到viewDidLayoutSubviews那麼它應該工作。

+0

我已添加圖片。我和你一樣迅速做同樣的事情。但有些事情是錯的,我無法弄清楚。 @ R3D3vil –

+0

你使用的是stackviews嗎?當他們是堆棧視圖的一部分時,我有問題舍入按鈕。 – R3D3vil

+0

不,我沒有使用stackviews但自動版式@ R3D3vil –