Swift 中 UIButton 的圆顶角 [英] Round Top Corners of a UIButton in Swift

查看:18
本文介绍了Swift 中 UIButton 的圆顶角的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道我可以使用以下方法绕过所有四个角:

 myBtn.layer.cornerRadius = 8myBtn.layer.masksToBounds = true

由于我只想进行第二轮,我做了一些研究,发现

问题是,如何调整它以在 UIButton 上工作?

解决方案

添加UIButton的扩展:

扩展 UIButton{函数圆形按钮(){让 maskPath1 = UIBezierPath(roundedRect: bounds,byRoundingCorners: [.topLeft, .topRight],角半径:CGSize(宽度:8,高度:8))让 maskLayer1 = CAShapeLayer()maskLayer1.frame = 边界maskLayer1.path = maskPath1.cgPathlayer.mask = maskLayer1}}

在 viewDidAppear/viewDidLayoutSubviews 中调用:

btnCorner.roundedButton()

按钮角输出:

I know I can round all four corners using:

 myBtn.layer.cornerRadius = 8
 myBtn.layer.masksToBounds = true

Since I only want to round two, I did some research and found this:

extension UIView {
    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
    }
}

Which is called like this:

view.roundCorners([.TopLeft , .TopRight], radius: 10)

Yet this doesn't work for a UIButton. When I switch the extension to be for type UIButton and pass it a button , the output looks like this:

The question is, how do I adapt this to work on a UIButton?

解决方案

Adding Extension of UIButton:

extension UIButton{
    func roundedButton(){
        let maskPath1 = UIBezierPath(roundedRect: bounds,
            byRoundingCorners: [.topLeft , .topRight],
            cornerRadii: CGSize(width: 8, height: 8))
        let maskLayer1 = CAShapeLayer()
        maskLayer1.frame = bounds
        maskLayer1.path = maskPath1.cgPath
        layer.mask = maskLayer1
    }
}

Calling in viewDidAppear/viewDidLayoutSubviews:

btnCorner.roundedButton()

Button Corner OutPut:

这篇关于Swift 中 UIButton 的圆顶角的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆