創(chuàng)建xib的時(shí)候不選擇導(dǎo)航欄拧晕,讓View從導(dǎo)航欄下面開始顯示
在ViewController的父類的viewDidLoad方法加一句代碼
self.edgesForExtendedLayout = UIRectEdgeBottom;
方法一
直接在viewDidLoad里面判斷該子類控制器是不是用xib加載的
//可以根據(jù)nibName是否為空來判斷該子類視圖是否通過xib創(chuàng)建
if (self.nibName.length > 0) {
self.edgesForExtendedLayout = UIRectEdgeBottom;
}
方法二
為了在項(xiàng)目里面更好的處理Xib的問題,可以直接建立1個(gè)所以xib繼承的父類直接繼承公共的父類,然后在代碼里面加上self.edgesForExtendedLayout = UIRectEdgeBottom;
或者也可以在純代碼的控制器中設(shè)置self.edgesForExtendedLayout = UIRectEdgeAll;
今天遇到一個(gè)用xib創(chuàng)建view的時(shí)候,是在約束不生效的問題
解決:一定要在加載xib文件之后給view設(shè)置一次frame才可以了罪。
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
self = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:nil options:nil] firstObject];
//這里設(shè)置frame甚垦,不然xib的約束不起作用
self.frame = frame;
}
return self;
}
慢慢來,一步一個(gè)巴掌印~~~