2016-11-22 55 views
0

我試圖創建一個按鈕,形狀爲半圓形。製作任意大小的按鈕?

裏面的按鈕類

layoutSubviews() { 
    createSemiCirclePath() 
} 

func createSemiCirclePath(){ 
     self.translatesAutoresizingMaskIntoConstraints = false 
     self.clipsToBounds = true 
     semiCircleShape.path = UIBezierPath.init(arcCenter: CGPoint(x: self.frame.size.width/2 , y:0), radius: self.frame.size.width/2, startAngle: 0, endAngle: CGFloat(M_PI), clockwise: true).cgPath 
     self.layer.addSublayer(semiCircleShape) 
     self.layer.masksToBounds = true 

    } 

我得到這樣的:

enter image description here

不過,我想是這樣的:

enter image description here

如果我想

func createSemiCirclePath(){ 
     self.translatesAutoresizingMaskIntoConstraints = false 
     self.clipsToBounds = true 
     semiCircleShape.path = UIBezierPath.init(arcCenter: CGPoint(x: self.frame.size.width/2 , y:0), radius: self.frame.size.width/2, startAngle: 0, endAngle: CGFloat(M_PI), clockwise: true).cgPath 
     self.layer.mask = semiCircleShape 
     self.layer.masksToBounds = true 

    } 

我的按鈕是

enter image description here

它還允許下按鈕的高度,這我不需要50%的點擊。

(1代碼)

的問題是,只有黑色部分應該點擊能夠和藍色部分應該被隱藏,即,它應該夾到子層。

任何建議表示讚賞。 謝謝。

+0

請檢查該http://stackoverflow.com/questions/1561585/iphone-button-with-non-rectangle-shape –

+0

的HTTP可能重複:/ /stackoverflow.com/a/33310108/5215474 – Saranjith

+0

是的,但完整的矩形按鈕是點擊不僅能夠半圓部分。 –

回答

0

可能是你可以繼承UIControl類,它類包含的方法來處理觸摸事件也是它類手柄目標/選擇程序。
另外這個類不包含自定義繪製邏輯的UIButton。 在你例子中,你應該只延長UIControl並添加

controlInstance.backgroundColor = [UIColor clearColor]; 
+0

nope,它直接從UIButton類繼承。 –

+0

這不是你的課嗎? –

+0

類半圓:UIButton的這個我 –