前言:
在UI布局的时候,返回的是UIView这个基类型,而设置属性时,需要具体的类型,为了方面性连续性写法,可以用asXXX转换成具体类型。
类型转换定义:
@interface UIView(STUIViewAs) -(UISwitch*)asSwitch; -(UIStepper*)asStepper; -(UIProgressView*)asProgressView; -(UILabel*)asLabel; -(UIImageView*)asImageView; -(UITextField*)asTextField; -(UITextView*)asTextView; -(UIButton*)asButton; -(UIScrollView*)asScrollView; -(UITableView*)asTableView; -(UICollectionView*)asCollectionView; -(UIPickerView*)asPickerView; -(STView*)asSTView; -(UIView*)asBaseView; -(UIImage*)asImage; @end
说明:
1、添加具体UI:返回具体的UI类型。
[sagit addUIButton:@“name"]
此时返回的是具体类型 UIButton。
这个时候,可以设置一些UIButton的相关属性。
2、相对布局时:返回的是UIView这个基类型。
[[sagit addUIButton:@“name"] x:0 y:0]
如果此时对UIButton 进行宽高、XY坐标、relate方法等布局方式,则此时返回的是 UIView。
此时无法再进行UIButton的属性设置。
-------------------------------------------------------------------------------------------------------------------------
3、因此布局有几种写法:
1、先布局,再通过block设置属性:需要手工block中的UIView修改具体的类型:UIButton,一般个人只有在层级布局时才使用。
[[sagit addUIButton:@“name"] x:0 y:0] block^(UIButton*view){ [view text:@"xxxx"]; }];
2、用asXXX属性进行转换【属性少的时候,可以中间进行类型转换使用,太长了就不好用了。】
[[[[sagit addUIButton:@“name"] x:0 y:0] asUIButton] text:@"xxxx"];
3、先设置属性、再布局【属性少的时候,这种写法最简短。】
[[[sagit addUIButton:@“name"] text:@"xxxx"] x:0 y:0]
4、拆分两种写法:布局1行、属性1行。【属性多的时候,拆成两行是看起来最舒服的。】
[[sagit addUIButton:nil] width:20 height:20 x:0 y:0] [STLastUIButton text:@"hello"];
通过STLastUIXXX类型,可以拿到刚添加的UI控件的具体类型。
总结:
代码的写法是多种的,具体喜欢哪种,都可以,只要知道两点:
1、涉及到布局时返回的是基类:UIView。
2、看第1点。
版权声明:本文原创发表于 博客园,作者为 路过秋天 本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。 |
个人微信公众号![]() |
Donation(扫码支持作者):支付宝:![]() |
Donation(扫码支持作者):微信:![]() |
![]() |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
2019-08-15 ASP.NET Aries 高级开发教程:行内编辑事件怎么新增数据到后台(番外篇)