func roundCorners(_ corners: UIRectCorner, radius: CGFloat) {
let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
let mask = CAShapeLayer()
mask.path = path.cgPath
self.layer.mask = mask
}
私はUIButton
の特定の側から角の半径を与えるためにこの機能を使用しています。私はUITableViewCell
にこの関数を呼び出していますが、私はのような問題を抱えています。デバイスの幅が159.5であれば、デバイスの幅がデバイスの幅に応じて変化するようなボタンに制約を与えました。しかし、それは変化しておらず、ボタンはその幅から切断しています。私はTableviewCell
ベジェ線のボタンの幅の問題
override func layoutSubviews() {
super.layoutSubviews()
self.btnWithdraw.roundCorners([.bottomRight], radius: 4.0)
self.btnAddFund.roundCorners([.bottomLeft], radius: 4.0)
}
でこの関数を呼び出しています。しかし、ここでストーリーボードのViewControllerとボタンに与えられたあたりには制約ごとに幅を取っていないとして、それが元のフレームを取っているような問題がある。
助けていただければ幸いです。
はおそらく、問題はあなたがlayoutSubviews
がボタンが新たにレイアウトされているすべての状況下でセルに呼び出されることを想定しているということであるあなたに
iOS 9では、ボタンは、マスクを必要とせずに、特定のコーナーのみを丸める固有の機能を備えています。 – matt
okアプリケーションでios 8がサポートされている場合、どうすればよいですか? @matt –
あなたのコードを 'drawReact'の中に置きます。 – Dhiru