Swift 学习之设置控价圆角
一、使用 frame 添加的控件(控件没有使用约束)
方法一:使用 layer.cornerRadius 和 layer.masksToBounds 来设置圆角
layer.masksToBounds
方法二:使用 UIBezierPath 和 CAShapeLayer 来设置圆角
self.setCorner(view: self.noHandleLabel) //未处理时间的圆角
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 }
二、使用约束添加的控价(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 }
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; }