2017-10-28 13 views
0

xibにUIButtonがあり、四角形のように矢印があるようにフレームを変更したいが、それをxib(インターフェイスビルダーから)に保存したいのですがどうすればいいですか?drawRectを使わずにUIButton rectを変更する

私はdrawRectのUIBezierPathでそれを行うことができますが、それはカスタムシェイプを作成してコードから追加することだけです。

別の方法がありますか?

enter image description here これは、カスタムボタンのクラスで私のコードです:

class ButtonContinue: UIButton { 

    var path: UIBezierPath! 

    override func awakeFromNib() { 
     backgroundColor = UIColor.green 
     addTarget(self, action: #selector(touchDown), for: .touchDown) 
    } 

    override func draw(_ rect: CGRect) { 

     path = UIBezierPath() 
     path.move(to: CGPoint(x: 32, y: 28 + (rect.size.height/2))) 
     path.addLine(to: CGPoint(x: 70, y: 28)) 
     path.addLine(to: CGPoint(x: rect.size.width, y: 28)) 
     path.addLine(to: CGPoint(x: rect.size.width, y: rect.size.height + 28)) 
     path.addLine(to: CGPoint(x: 70, y: rect.size.height + 28)) 
     path.close() 

     let shapeLayer = CAShapeLayer() 
     shapeLayer.strokeColor = UIColor.red.cgColor 
     shapeLayer.fillColor = UIColor.blue.cgColor 
     shapeLayer.path = path.cgPath 
     layer.addSublayer(shapeLayer) 
    } 

    func touchDown(button: ButtonContinue, event: UIEvent) { 
     if let touch = event.touches(for: button)?.first { 
      let location = touch.location(in: button) 

      if path.contains(location) == false { 
       button.cancelTracking(with: nil) 
      } 
     } 
    } 
} 
+0

をレンダリングした画像を設定することができ、画像の線の色を変更したい場合は?イメージを使うのは簡単ではありませんか? –

+0

タッチが矢印の枠内にあるかどうか確認したいのですか?私はただのイメージを使用します。 –

答えて

0

はちょうどあなたがプロジェクトの資産に提供された画像を置きます。ボタンイメージをアセット内のイメージに設定します。

self.imageView.image = UIImage(named: "imageName") 

そして、あなたはそれをこのように必要ですなぜあなたはalwaysTemplate

self.imageView?.image = UIImage(named: "imageName")?.withRenderingMode(UIImageRenderingMode.alwaysTemplate) 
self.imageView?.tintColor = .red 
関連する問題