view的相对布局 && InterfaceBuilder中一些属性的使用
来源:互联网 发布:三星充电器数据 编辑:程序博客网 时间:2024/04/28 09:38
在iOS应用的开发过程中,经常会使用,setFrame的方式对UIView进行布局,
经常会使用计算的方式,如self.view.bounds.size.height - 20-44- Heignt等来计算Y的相对位置
我们知道上边的数字 20是status bar的高度,44是navigationBar的高度.
这样的写法没有什么错误,但是不利于代码的复用,比如一个ViewController在创建的时候,有可能有navigationController,也可能没有navigationController,在这种情况下,这个VIewController里边的子UIView的相对位置就可能出现偏差.
所以,本文主要介绍autoresizingMask属性,对UIVIew进行相对的布局。
假设如下的需求:
程序启动后,构建一个自定义的TabBar,始终显示在应用的底部,无论屏幕发生旋转,或者收到来电的情况下,都显示在应用的底部。(看起来,跟现在的很多微博客户端相似,它们多半都没有使用系统的tabbarcontroller方式,而是自己绘制的tabbar).
可以用如下的代码来实现
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- self.tabbar = [[[CustumTabBar alloc] init] autorelease];
- [self.tabbar setFrame:CGRectMake(0, self.view.bounds.size.height -44, self.view.bounds.size.width, 44)];
- self.tabbar.autoresizingMask = UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleWidth;
- [self.tabbar setBackgroundColor:[UIColor blueColor]];
- [self.view addSubview:self.tabbar];
- }
代码中,autoresizingMask设置为底部和宽度对齐,加上shouldAutorotateToInterfaceOrientation方法返回YES后,程序无论怎样转向,TabBar都会在应用的底部显示了。
UIViewAutoresizingFlexibleTopMargin表示view到顶部的距离是会相应变化的,到底部的距离不变,也就是底部对齐了。
同理,如果想让一个UIVIew始终都在屏幕中心,
可以设置它的Y为 ceilf((self.view.bounds.size.height - Height)/2),
同时设置autoresizingMask = UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleBottomMargin 即可。
- view的相对布局 && InterfaceBuilder中一些属性的使用
- Relative相对布局的一些属性
- 关于相对布局的一些属性
- 相对布局的属性
- 相对布局的属性
- 相对布局的属性
- 线性布局和相对布局的一些属性
- 相对布局中一些常用属性
- android 相对布局RelativeLayout中的一些属性的使用和实例
- Android RelativeLayout(相对布局的一些属性)
- 相对布局的常用属性
- 相对布局的常用属性
- Android相对布局的属性
- 相对布局的layout_alignLeft属性
- 相对布局的layout_alignLeft属性
- 相对布局的使用
- 相对布局的使用
- Android中相对布局的使用
- n=3可能的排列
- lightoj 1037 Agent 47
- const的使用方法
- CMM流程之总结
- OGRE消息机制
- view的相对布局 && InterfaceBuilder中一些属性的使用
- JS中的MAP对象
- nested标记库
- Hdu2602_Bone-Collector
- 技巧:多共享动态库中同名对象重复析构问题的解决方法
- 利用取余相除的方法,打印10000以内的回文数字
- Couchbase之环境搭建 与 基于Java的测试
- poj 1990 MooFest 树状数组
- dp求解矩阵链问题(poj1651)