Swift 学习之设置控价圆角

mac2022-07-05  30

一、使用 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

 

转载于:https://www.cnblogs.com/yxtBlogs/p/6134537.html

最新回复(0)