ios中对UIView四个角都设置为圆角很简单,直接使用 view.layer.cornerRadius = 10
就ok了,处理部分圆角的方式有两种,如下示例:
- 利用CAShapeLayer处理,但是 不能与自动布局库 共用,必须人工计算设置焦点以及宽高;
//对UIView进行扩展,加上设置部分圆角方法
//size 为圆角大小,宽高都是size值,roundingCorners为圆角区域
extension UIView {
public func setCorner(_ size:CGFloat,_ roundingCorners:UIRectCorner) {
let fieldPath = UIBezierPath.init(roundedRect: self.bounds, byRoundingCorners: roundingCorners, cornerRadii:CGSize(width: size, height: size) )
let fieldLayer = CAShapeLayer()
fieldLayer.frame = self.bounds
fieldLayer.path = fieldPath.cgPath
self.layer.mask = fieldLayer
}
}
//调用
let topUIView = UIView(frame: CGRect(x: 0, y: 0, width:100, height: 100) //直接指定view位置以及大小
topUIView.backgroundColor =UIColor.red
view.addSubview(topUIView)
topUIView.setCorner(12, [.topLeft,.topRight])
// 或者 topUIView.setCorner(12, UIRectCorner(rawValue: (UIRectCorner.topLeft.rawValue|UIRectCorner.topRight.rawValue)))
// UIRectCorner圆角区域属性
public static var topLeft: UIRectCorner { get } //左上
public static var topRight: UIRectCorner { get } //右上
public static var bottomLeft: UIRectCorner { get } // 左下
public static var bottomRight: UIRectCorner { get } // 右下
public static var allCorners: UIRectCorner { get } // 全部
- 在ios版本为11以上时,可以直接使用layer的maskedCorners属性进行设置,并且可以和自动布局库一块使用;
// 设置左上,右上
topUIView.layer.cornerRadius = 10
if #available(iOS 11.0, *) {
topUIView.layer.maskedCorners = [CACornerMask.layerMinXMinYCorner , CACornerMask.layerMaxXMinYCorner]
}else{
}
// CACornerMask圆角区域属性
layerMinXMinYCorner // 左上
layerMaxXMinYCorner // 右上
layerMinXMaxYCorner // 左下
layerMaxXMaxYCorner // 右下
网友评论