2016-11-22 9 views
0

半円の形のボタンを作成しようとしています。任意のサイズのボタンを作成しますか?

enter image description here

しかし、私はこのようにしたい::ボタンクラス内

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

私は

をしようとしている場合
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 

    } 

私のボタンは、また、私は必要のないボタンの高さの50%の下でクリックすることができますされ

enter image description here

です。

問題である(コード1)、ブラックのみの部分はクリック可能であるべきであり、青の部分、すなわち、それはサブレイヤにクリップする必要があり、隠されるべきです。

ご迷惑をおかけして申し訳ございません。おかげさまで

+0

を追加する必要があります。httpのこのhttp://stackoverflow.com/questions/1561585/iphone-button-with-non-rectangle-shape –

+0

が重複する可能性を確認してください:/ /stackoverflow.com/a/33310108/5215474 – Saranjith

+0

はい、半角部分だけでなく、完全な長方形のボタンがクリック可能です。 –

答えて

0

UIControlクラスをサブクラス化することもできますが、このクラスにはタッチイベントを処理するメソッドも含まれています。このクラスはターゲット/選択ルーチンを処理します。
また、このクラスにはカスタム描画ロジックがUIButtonとして含まれていません。 あなたの例では、唯一のUicontrolを拡張し、

controlInstance.backgroundColor = [UIColor clearColor]; 
+0

nopeでは、UIButtonクラスから直接継承します。 –

+0

あなたのクラスではありませんか? –

+0

class semiCircle:UIButtonこのマイクラス –

関連する問題