如何在swift3 ios中制作UIbutton正方形的上边缘
我有一个按钮,如何在swift3 ios中制作UIbutton正方形的上边缘,ios,swift,uibutton,Ios,Swift,Uibutton,我有一个按钮,cornerRadius=10。但我需要以正方形显示按钮的顶部边缘。如何实现这一点?您可以使用UIBezierPath实现这一点 @IBOutlet weak var button: UIButton! override func viewDidLoad() { button.layer.borderWidth = 0.5 button.layer.cornerRadius = 10 button.layer.masksTo
cornerRadius=10
。但我需要以正方形显示按钮的顶部边缘。如何实现这一点?您可以使用UIBezierPath实现这一点
@IBOutlet weak var button: UIButton!
override func viewDidLoad() {
button.layer.borderWidth = 0.5
button.layer.cornerRadius = 10
button.layer.masksToBounds = true
button.layoutMargins.left = 5
//roundCorners(corners: [.bottomLeft, .bottomRight], radius: button.cornerRadius)
super.viewDidLoad()
// Do any additional setup after loading the view.
}
您可以创建UIView的扩展,如:
let path = UIBezierPath(button.bounds,
byRoundingCorners:[.bottomRight, .bottomLeft],
cornerRadii: CGSize(width: 10, height: 10))
let maskLayer = CAShapeLayer()
maskLayer.path = path.cgPath
button.layer.mask = maskLayer
然后使用此按钮使按钮圆整,如:
public extension UIView {
/// Set some or all corners radiuses of view.
///
/// - Parameters:
/// - corners: array of corners to change (example: [.bottomLeft, .topRight]).
/// - radius: radius for selected corners.
public func roundCorners(_ corners: UIRectCorner, radius: CGFloat) {
let maskPath = UIBezierPath(roundedRect: bounds,
byRoundingCorners: corners,
cornerRadii: CGSize(width: radius, height: radius))
let shape = CAShapeLayer()
shape.path = maskPath.cgPath
layer.mask = shape
}
}
在swift 3.0中,您可以在视图控制器的viewDidload方法中尝试此代码
yourBtn.round([.bottomLeft, .bottomRight], radius: 10)
你的纽扣看起来像
同时设置按钮的高度和宽度(10,10)请准确分享按钮图像,这样我会让你知道@Rahuland的可能副本:他只需将左下角和右下角的矩形四舍五入即可放置
拐角半径。:p别忘了在你的问题中使用Swift/Objetivc-c标记,@rakesh但顶部边缘没有连接。它与边缘断开。@Rakesh没有完全满足您的要求?我需要以方形显示按钮的上边缘,而底部边缘保持圆形corners@Rakesh以上代码给出了底部和顶部边缘的角半径保持不变。我应该在哪里给出此代码yourBtn.round([.bottomLeft,.bottomRight],radius:10)@Rakesh您可以在viewDidLoad()方法中添加此参数
let rectShape = CAShapeLayer()
rectShape.bounds = self.yourBtnName.frame
rectShape.position = self.yourBtnName.center
rectShape.path = UIBezierPath(roundedRect: self.yourBtnName.bounds, byRoundingCorners: [.bottomLeft , .bottomRight], cornerRadii: CGSize(width: 10, height: 10)).cgPath
//Here I'm masking the textView's layer with rectShape layer
self.yourBtnName.layer.mask = rectShape
button.layer.cornerRadius = 2;
button.layer.borderWidth = 1;
button.layer.borderColor = UIColor.whiteColor().CGColor