创建xib的时候不选择导航栏,让View从导航栏下面开始显示
在ViewController的父类的viewDidLoad方法加一句代码
self.edgesForExtendedLayout = UIRectEdgeBottom;
方法一
直接在viewDidLoad里面判断该子类控制器是不是用xib加载的
//可以根据nibName是否为空来判断该子类视图是否通过xib创建
if (self.nibName.length > 0) {
self.edgesForExtendedLayout = UIRectEdgeBottom;
}
方法二
为了在项目里面更好的处理Xib的问题,可以直接建立1个所以xib继承的父类直接继承公共的父类,然后在代码里面加上self.edgesForExtendedLayout = UIRectEdgeBottom;
或者也可以在纯代码的控制器中设置self.edgesForExtendedLayout = UIRectEdgeAll;
今天遇到一个用xib创建view的时候,是在约束不生效的问题
解决:一定要在加载xib文件之后给view设置一次frame才可以。
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
self = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:nil options:nil] firstObject];
//这里设置frame,不然xib的约束不起作用
self.frame = frame;
}
return self;
}
慢慢来,一步一个巴掌印~~~
网友评论