iOS 指定UIView的某幾個圓角或邊框(Swift)
阿新 • • 發佈:2018-12-12
在開發中我們經常會遇到對一個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