1.在我们的项目中很多时候都会有使用xib来设置TableView的HeaderView或者和tableFooterView的情况,这是遇到的问题
2在这之前介绍autoResizingMask
枚举类型,当父视图bounds改变时,自动调节子控件在父视图中的位置与宽高
枚举类型:
typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) {
UIViewAutoresizingNone = 0, //不自动调整。
UIViewAutoresizingFlexibleLeftMargin = 1 << 0,//自动调整view与父视图左边距,以保证右边距不变
UIViewAutoresizingFlexibleWidth = 1 << 1,//自动调整view的宽度,保证左边距和右边距不变
UIViewAutoresizingFlexibleRightMargin = 1 << 2,//自动调整view与父视图右边距,以保证左边距不变
UIViewAutoresizingFlexibleTopMargin = 1 << 3,//自动调整view与父视图上边距,以保证下边距不变
UIViewAutoresizingFlexibleHeight = 1 << 4,//自动调整view的高度,以保证上边距和下边距不变
UIViewAutoresizingFlexibleBottomMargin = 1 << 5 //自动调整view与父视图下边距,以保证上边距不变
};
3.TableHeaderView的使用方法
1.新建工程,在ViewController中添加一个TableView。
2.新建个类FDTableHeaderView,设置背景色为浅灰色。并添加一个Label控件作为我们改变之后动态改变TableHeaderView的工具。
3.在controller中通过xib声明一个FDTableHeaderView对象,设置tableview的tableHeaderView
如下代码:
//在这里我们可以简单假设下,如果把header的AutoResizingMask设置为None,不让header随着父视图的改变而改变,会有什么效果?
UINib *nib = [UINib nibWithNibName:@"FDTableHeaderView" bundle:nil];
FDTableHeaderView *header = [nib instantiateWithOwner:nil options:nil][0];
//这个是重点:
header.autoresizingMask = UIViewAutoresizingNone;
self.tableView.tableHeaderView = header;
网友评论