方法一:使用 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与没有使用约束添加控价并设置控件圆角的区别是:将设置圆角的方法放在 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 CodeOC:
- (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
转载于:https://www.cnblogs.com/yxtBlogs/p/6134537.html