1. 程式人生 > >iOS 指定UIView的某幾個圓角或邊框(Swift)

iOS 指定UIView的某幾個圓角或邊框(Swift)

在開發中我們經常會遇到對一個UIView 設定四個圓角的情況,這種情況是很好處理的。但是如果遇到只設置其中的某幾個圓角的情況怎麼辦呢?有一種方法是通過UIBezierPath的方法來做,程式碼如下:

/**

* 設定uiview 的任意圓角

**/

func SetMutiBorderRoundingCorners(_ view:UIView,corner:CGFloat)

{

    let maskPath = UIBezierPath.init(roundedRect: view.bounds,

    byRoundingCorners: [UIRectCorner.bottomLeft, UIRectCorner.topRight],

    cornerRadii: CGSize(width: corner, height: corner))

    let maskLayer = CAShapeLayer()

    maskLayer.frame = view.bounds

    maskLayer.path = maskPath.cgPath

    view.layer.mask = maskLayer

}

此外,我們還會遇到給一個UIview設定某幾條邊框而不是全部邊框的情況,解決辦法如下:

func SetBorderWithView(_ view:UIView,top:Bool,left:Bool,bottom:Bool,right:Bool,width:CGFloat,color:UIColor)

{
    
    if top

    {

        let layer = CALayer()

        layer.frame = CGRect(x: 0, y: 0, width: view.frame.size.width, height: width)

        layer.backgroundColor = color.cgColor

        view.layer.addSublayer(layer)

    }

    if left

    {

        let layer = CALayer()

        layer.frame = CGRect(x: 0, y: 0, width: width, height: view.frame.size.height)

        layer.backgroundColor = color.cgColor

        view.layer.addSublayer(layer)

    }

    if bottom

    {

        let layer = CALayer()

        layer.frame = CGRect(x: 0, y: view.frame.size.height - width, width: width, height: width)

        layer.backgroundColor = color.cgColor

        view.layer.addSublayer(layer)

    }

    if right

    {

        let layer = CALayer()

        layer.frame = CGRect(x: view.frame.size.width - width, y: 0, width: width, height: view.frame.size.height)

        layer.backgroundColor = color.cgColor

        view.layer.addSublayer(layer)

    }

}

以上兩種方法效果如下圖所示

Simulator Screen Shot - iPhone 8 Plus - 2018-08-10 at 13.51.22.png