2017-05-15 5 views
1

私はSwiftにはかなり新しく、UIButtonを編集して特定の方法で表示する方法を理解しようとしています。私は私のUIButtonsは次のように見えるようにすることができます方法を知っているしたいと思います:UIButtonを編集して角を丸くする

this

+1

私のための白い画面です – JuicyFruit

+0

私の謝罪。私は私が探しているものを示すイメージで質問を更新しました。 – notSoExperiencedCoder

答えて

2

はこれを試してみてください。

extension UIView { 
    func roundCorners(_ corners: UIRectCorner, radius: CGFloat, borderColor: UIColor?, borderWidth: CGFloat?) { 
     let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius)) 

     let mask = CAShapeLayer() 
     mask.frame = self.bounds 
     mask.path = path.cgPath 
     self.layer.mask = mask 

     if borderWidth != nil { 
      addBorder(mask, borderWidth: borderWidth!, borderColor: borderColor!) 
     } 
    } 

    private func addBorder(_ mask: CAShapeLayer, borderWidth: CGFloat, borderColor: UIColor) { 
     let borderLayer = CAShapeLayer() 
     borderLayer.path = mask.path 
     borderLayer.fillColor = UIColor.clear.cgColor 
     borderLayer.strokeColor = borderColor.cgColor 
     borderLayer.lineWidth = borderWidth 
     borderLayer.frame = bounds 
     layer.addSublayer(borderLayer) 
    } 
} 

は、用法:

someView.roundCorners([.topLeft, .topRight], radius: 3, borderColor: nil, borderWidth: nil) //top corners with radius 3 without border 
someView.roundCorners(.allCorners, radius: 2, borderColor: UIColor.red, borderWidth: 1) //all corners with red border 

あなたが任意のUIエレメントにこれを適用することができますUIView(たとえばUIButton)を継承します。

0

この場合、私は白いテキストで透明なボタンを作成します。

その後、私は境界線の色やサイズを定義します

self.myButton.layer.layer.borderColor = UIColor.white 
self.myButton.layer.layer.borderWidth = 3 

次の私はボタンを丸めます:

self.myButton.layer.cornerRadius = 3 
self.myButton.clipsToBounds = true 

だけの上にボタンを配置し、背景を赤にするにはこの色の表示

+0

これは、2だけでなく、4つのコーナーを丸めます。 – rmaddy

関連する問題