Swift 学习之设置控价圆角

一、使用 frame 添加的控件(控件没有使用约束

方法一:使用 layer.cornerRadius 和 layer.masksToBounds 来设置圆角

layer.masksToBounds
View Code

方法二:使用 UIBezierPath 和 CAShapeLayer 来设置圆角

self.setCorner(view: self.noHandleLabel) //未处理时间的圆角
View Code
func setCorner(view: UIView) -> Void {
        let maskPaht  = UIBezierPath(roundedRect: view.bounds, byRoundingCorners: UIRectCorner.allCorners, cornerRadii: CGSize(width: view.bounds.size.width/2, height: view.bounds.size.width/2))//view.bounds.size.height/2
        let sharpLayer = CAShapeLayer()
        sharpLayer.frame = view.bounds
        sharpLayer.path = maskPaht.cgPath
        view.layer.mask = sharpLayer
        
}
View Code

 

二、使用约束添加的控价(Swift 的 SnapKit 以及 OC 的 Masonry

与没有使用约束添加控价并设置控件圆角的区别是:将设置圆角的方法放在 layoutSublayers 方法中  即:

Swift:

override func layoutSublayers(of layer: CALayer) {
        super.layoutSublayers(of: layer)
        
        //设置圆角
//        self.setCorner(view: self.headerImageView)//设置头像的圆角
//        self.setCorner(view: self.noHandleLabel) //未处理时间的圆角
        
        self.headerImageView.layer.cornerRadius = self.headerImageView.bounds.size.width/2
        self.headerImageView.layer.masksToBounds = true
        
        self.noHandleLabel.layer.cornerRadius = self.noHandleLabel.bounds.size.width/2
        self.noHandleLabel.layer.masksToBounds = true
}
View Code

OC:

- (void)layoutSublayersOfLayer:(CALayer *)layer{
    
    //设置圆角
//        self.setCorner(view: self.headerImageView);//设置头像的圆角
//        self.setCorner(view: self.noHandleLabel); //未处理时间的圆角
    self.headerImageView.layer.cornerRadius = self.headerImageView.bounds.size.width/2;
    self.headerImageView.layer.masksToBounds = YES;
    

}
View Code

 

posted @ 2016-12-05 16:52  Now,OnMyWay  阅读(601)  评论(0编辑  收藏  举报