美文网首页
UIView设置部分圆角

UIView设置部分圆角

作者: Coder_Star | 来源:发表于2019-03-12 21:36 被阅读0次

    ios中对UIView四个角都设置为圆角很简单,直接使用 view.layer.cornerRadius = 10就ok了,处理部分圆角的方式有两种,如下示例:

    1. 利用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 }  // 全部
    
    1. 在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 // 右下
    

    相关文章

      网友评论

          本文标题:UIView设置部分圆角

          本文链接:https://www.haomeiwen.com/subject/mwyopqtx.html