Autolayout 下面的 Layer.cornerRadius
一、问题:
如何在Autolayout模式中设置一个UIView的layer.cornerRadius?
二、解决:
UiView的layer目前还不支持Autolayout设置约束,因此如果想设置一个layer.cornerRadius的大小,必须传递的是一个值。
如果被设置的UIView尺寸会发生变化,也就是动态的大小,那么就需要在约束发生变化的时候,主动更新layer.cornerRadius对应的大小
那么具体分两种情况来对待:
第一种,UIView的尺寸不变化的时候:
1)在Xcode中设置layer.cornerRadius
2)使用代码
注意代码的位置,需要在View初始化的时候,比如ViewDidload,initView的时候
@interface ViewController () @property (weak, nonatomic) IBOutlet UIImageView *imgView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor yellowColor]; self.imgView.backgroundColor = [UIColor blueColor]; self.imgView.layer.cornerRadius = self.view.bounds.size.height/2; self.imgView.layer.masksToBounds = YES; } @end
但是需要注意一种情况,如果这个View的尺寸未计算得到的时候,需要放在 viewDidLayoutSubviews (VC),和viewDidLayout中(View)
第二种,UIView的尺寸变化的时候:
这种时候因为UIView的尺寸发生变化,那么需要在尺寸信息生成之后,进行调整。
如果是VC,那么在viewDidLayoutSubviews或者ViewDidAppear的回调中。
如果是UIView,苹果建议将约束代码放在updateConstraints回调中,这样可以提升性能。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | //重写updateViewConstraints方法,进行约束的更新 - ( void )updateViewConstraints { [ self .growingButton mas_updateConstraints:^(MASConstraintMaker *make) { make.center.mas_equalTo( self .view); // 初始宽、高为100,优先级最低 make.width.height.mas_equalTo(100 * self .scacle).priorityLow(); // 最大放大到整个view make.width.height.lessThanOrEqualTo( self .view); }]; [ super updateViewConstraints]; } // 通知需要更新约束,但是不立即执行 [ self setNeedsUpdateConstraints]; // 立即更新约束,以执行动态变换 // update constraints now so we can animate the change [ self updateConstraintsIfNeeded]; // 执行动画效果, 设置动画时间 [UIView animateWithDuration:0.2 animations:^{ [ self layoutIfNeeded]; }]; |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架