參考官方文檔,淺顯提取和理解
創(chuàng)建navigationBar
- (void)loadView{
// view= nil會(huì)調(diào)用loadView方法
// view為nil,在loadView內(nèi)調(diào)用self.view會(huì)造成死循環(huán),導(dǎo)致內(nèi)存泄漏
self.view = [[UIView alloc] init];
_navigationBar = [[UINavigationBar alloc]init];
_navigationBar.delegate = self;
[self.view addSubview:_navigationBar];
}
計(jì)算statuBar到navigationBar的高度
CGFloat topLayoutGuide = 0.0f;
if ([self respondsToSelector:@selector(topLayoutGuide)])
topLayoutGuide = (self.topLayoutGuide).length;
根據(jù)此設(shè)置navigationBar的frame
[_navigationBar sizeToFit]; // return 'best' size to fit current view bounds
_navigationBar.frame = CGRectMake(_navigationBar.frame.origin.x, topLayoutGuide,_navigationBar.frame.size.width,_navigationBar.frame.size.height);
計(jì)算剩余展示子視圖或子控制器的frame
return CGRectMake(0,
_navigationBar.frame.size.height + _navigationBar.frame.origin.y,
self.view.bounds.size.width,
self.view.bounds.size.height - _navigationBar.frame.size.height - _navigationBar.frame.origin.y);