有时候视图莫名其妙不显示的的原因:autoresizingMask
//通过xib加载控件的时候调用
- (instancetype)initWithCoder:(NSCoder *)aDecoder
{
if (self = [super initWithCoder:aDecoder]){
self.autoresizingMask = UIViewAutoresizingNone;
}
return self;
}
当父视图缩小的时候,子视图也跟着缩小到一定程度,导致消失,数据也会不显示。
autoResizingMask 是UIView的一个属性,在一些简单的布局中,使用autoResizingMask,可以实现子控件相对于父控件的自动布局。
autoResizingMask 是UIViewAutoresizing 类型的,其定义为:
@property(nonatomic) UIViewAutoresizing autoresizingMask; // simple resize. default is UIViewAutoresizingNone
UIViewAutoresizing 是一个枚举类型,默认是 UIViewAutoresizingNone,其可以取得值有:
![](/assets/blank.gif)
typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) {UIViewAutoresizingNone = 0,UIViewAutoresizingFlexibleLeftMargin = 1 << 0,UIViewAutoresizingFlexibleWidth = 1 << 1,UIViewAutoresizingFlexibleRightMargin = 1 << 2,UIViewAutoresizingFlexibleTopMargin = 1 << 3,UIViewAutoresizingFlexibleHeight = 1 << 4,UIViewAutoresizingFlexibleBottomMargin = 1 << 5 };
![](/assets/blank.gif)
各属性解释:
UIViewAutoresizingNone |
不会随父视图的改变而改变 |
UIViewAutoresizingFlexibleLeftMargin |
自动调整view与父视图左边距,以保证右边距不变 |
UIViewAutoresizingFlexibleWidth |
自动调整view的宽度,保证左边距和右边距不变 |
UIViewAutoresizingFlexibleRightMargin |
自动调整view与父视图右边距,以保证左边距不变 |
UIViewAutoresizingFlexibleTopMargin |
自动调整view与父视图上边距,以保证下边距不变 |
UIViewAutoresizingFlexibleHeight |
自动调整view的高度,以保证上边距和下边距不变 |
UIViewAutoresizingFlexibleBottomMargin |
自动调整view与父视图的下边距,以保证上边距不变 |
注意:autoResizingMask 既可以在代码中直接使用,也可以在UIStoryboard中使用。
一个代码中使用autoResizingMask的例子:
![](/assets/blank.gif)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];UIViewController *viewController = [[UIViewController alloc] init];self.window.rootViewController = viewController;self.window.backgroundColor = [UIColor whiteColor];UIView *view = [[UIView alloc] initWithFrame:CGRectMake(20,100,200,100)];[view setBackgroundColor:[UIColor grayColor]];[self.window addSubview:view];UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(20,20,50,50)];[button setBackgroundColor:[UIColor whiteColor]];[view addSubview:button];//距离父视图右边距不变//button.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;//距离父视图的左边距不变//button.autoresizingMask = UIViewAutoresizingFlexibleRightMargin;//距离父视图的左右边距不变,button大小会调整//button.autoresizingMask = UIViewAutoresizingFlexibleWidth;//view.frame = CGRectMake(20,100,300,100);//距离父视图的下边距不变//button.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;//距离父视图的上边距不变//button.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin;//距离父视图的上下边距不变,button大小会调整button.autoresizingMask = UIViewAutoresizingFlexibleHeight;view.frame = CGRectMake(20,100,200,200);[self.window makeKeyAndVisible];return YES; }
![](/assets/blank.gif)
另外,autoResizingMask 可以组合使用。例如:
button.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleLeftMargin;
表示的是,子控件相对于父控件的顶部和右侧的距离不变。
有时候视图莫名其妙不显示的的原因:autoresizingMask相关推荐
- html中显示桌面图片不显示不出来,电脑桌面图标出问题了怎么办? 电脑桌面图标不能显示是什么原因?...
可以借助360安全卫士,打开360安全卫士,点击[人工服务]服务选项 点击进入到人工服务界面,找到[电脑故障]--[图标显示异常],并点击该项 电脑开机后,桌面上所有图标都显示不出来该怎么办? 所需工 ...
- PDF视图工具栏不显示如何调出来
我们在打开PDF文件后,为了方便阅读查看经常会使用缩放工具来调整视图,但有时却找不到视图工具栏是怎么回事,要如何才能重新调整出来呢? 出现这种情况的原因大多是工具栏被隐藏,只需要重新打开即可. 我们双 ...
- iOS 让视图UIView 单独显示某一侧的边框线
有时候需要让view显示某一侧的边框线,这时设置layer的border是达不到效果的.在网上查阅资料发现有一个投机取巧的办法,原理是给view的layer再添加一个layer,让这个layer充当边 ...
- 列表视图案例3——显示联系人
列表视图案例3--显示联系人 一.运行效果 二.实现步骤 1.新建安卓应用DisplayContacts 2.准备背景
- 列表视图案例2——显示用户列表
列表视图案例2--显示用户列表 一.运行效果 二.实现步骤
- vue父组件引用子组件方法显示undefined问题原因及解决方法
vue父组件引用子组件方法显示undefined问题原因及解决方法 参考文章: (1)vue父组件引用子组件方法显示undefined问题原因及解决方法 (2)https://www.cnblogs. ...
- qt无法显示图片的原因
qt无法显示图片: 原因: 1.检查图片路径,将图片路径改为全路径 如图片路径单为./jpg时,找不到图片,为全路径时可以找到 2.检查图片格式,不要乱改图片的后缀(如1.jpg改成1.png),否则 ...
- 【HTML】关于height值设置和显示不同的原因以及font-size对象为中文和英文的区别
关于height值设置和显示不同的原因 height: 100px; CSS中把高度设置为100px,但是实际测量发现高度为125px 这个是因为:笔记本默认显示大小为125%,所以100的125%就 ...
- 计算机开机右下角无显示桌面,电脑开机后不显示桌面的原因
电脑开机后不显示桌面的原因 电脑开机后不显示桌面,四种原因分析.最近,有用户反映开机的时候无法显示桌面,这种情况该怎么解决呢?下面小编带来电脑开机后不显示桌面的原因及四种解决方法,一起来看看吧! 原因 ...
最新文章
- LINQ之路 2:C# 3.0的语言功能(上)
- python秒数变日期_将pandas日期列转换为已用秒数
- 刷机提示图像和设备不匹配_安卓5.0升级失败如何解决 安卓5.0刷机失败解决方法介绍【教程】...
- 关于对象不能直接访问私有成员的误区(转)
- 深度学习笔记(27) 经典卷积网络
- 【华为云技术分享】基于ModelArts AI市场算法MobileNet_v2实现花卉分类,支持CPU、GPU、Ascend推理
- 深入理解字符,字符集,gbk,utf8
- 2007 Office System Video
- [转载] Python3接口自动化框架:第三方openpyxl库读取excel之命名元组namedtuple承载数据
- python re 使用
- SQL2008安装 VS2008安装(VS2010存在的情况下)
- 取手机号码php正则表达式,PHP获取手机号码的正则表达式写法
- linux下的rpm命令详解,RPM包命令详解
- 百度地图中心点偏移-Javascript
- matlab怎么还原默认界面???
- VPP线程之间报文调度
- mysql spj_MySQL查询优化器--非SPJ优化--LIMIT优化
- 淘晶驰串口屏入门(五)下拉框 选择文本 动画 视频 外部图片
- On the Grasshopper and the Cricket --John Keats 蝈蝈与蟋蟀 济慈
- python+itk+读取dicom数据,并保存为nii文件