前一段写了个小项目,写代码写的够够的就为了省事,写了一个Xib创建的View视图。结果我把它放在TableView当作TableViewHeaderView处理的时候就出现了怎么设置frame都没有用,整个HeaderView的大小就是整个屏幕的大小,导致tableView 和 TableViewHeaderView 之间空出了好大的一段空白。正常的实现如下图
再接着吐槽一下百度,百度搜索关于这方面的问题出现的都是一些乱七八糟的东西,根本没有什么实质性的简介,纯属浪费了时间,百度只能做一些简单的查找属性的名字以及常识性问题,弃用。于是乎打开了chrome,果然你是真优秀,一搜就找到了问题的关键,紧接着就解决了问题。
//加上这句之后就可以正常的用了
self.autoresizingMask = UIViewAutoresizingNone;
在 UIView 中有一个autoresizingMask的属性,它对应的是一个枚举的值(如下),属性的意思就是自动调整子控件与父控件中间的位置,宽高。
enum {
UIViewAutoresizingNone = 0,
UIViewAutoresizingFlexibleLeftMargin = 1 << 0,
UIViewAutoresizingFlexibleWidth = 1 << 1,
UIViewAutoresizingFlexibleRightMargin = 1 << 2,
UIViewAutoresizingFlexibleTopMargin = 1 << 3,
UIViewAutoresizingFlexibleHeight = 1 << 4,
UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};
UIViewAutoresizingNone就是不自动调整。
UIViewAutoresizingFlexibleLeftMargin 自动调整与superView左边的距离,保证与superView右边的距离不变。
UIViewAutoresizingFlexibleRightMargin 自动调整与superView的右边距离,保证与superView左边的距离不变。
UIViewAutoresizingFlexibleTopMargin 自动调整与superView顶部的距离,保证与superView底部的距离不变。
UIViewAutoresizingFlexibleBottomMargin 自动调整与superView底部的距离,也就是说,与superView顶部的距离不变。
UIViewAutoresizingFlexibleWidth 自动调整自己的宽度,保证与superView左边和右边的距离不变。
UIViewAutoresizingFlexibleHeight 自动调整自己的高度,保证与superView顶部和底部的距离不变。
UIViewAutoresizingFlexibleLeftMargin |UIViewAutoresizingFlexibleRightMargin 自动调整与superView左边的距离,保证与左边的距离和右边的距离和原来距左边和右边的距离的比例不变。比如原来距离为20,30,调整后的距离应为68,102,即68/20=102/30。