Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在swift3 ios中制作UIbutton正方形的上边缘_Ios_Swift_Uibutton - Fatal编程技术网

如何在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