我希望有一个自定义titleView,它可以填充除BarButtonItems之外的有用空间。
@property (strong, nonatomic) IBOutlet UIView *testView;
ViewDidLoad中的
_testView.frame=CGRectMake(0, 0, self.view.frame.size.width-self.navigationItem.leftBarButtonItem.width - self.view.layoutMargins.right - self.view.layoutMargins.left, 44);
self.navigationItem.titleView =_testView;
但事情并没有像我预期的那样发挥作用:
几个问题:
对于iPhone 6S Plus,在将_testView分配给navigationItem.titleView之前,宽度为398,但在viewDidAppear之后,它变为329,为什么会这样?
titleView和右边框之间有差距,有没有办法删除间隙?
对于只有自动生成后退按钮的页面,我怎样才能获得它的宽度?
更新: 感谢@ JoBu1324帖子,左边barButton的宽度可以在viewDidAppear而不是viewDidLoad获取:
UIView *leftBarButtonView = [self.navigationItem.leftBarButtonItem valueForKey:@"view"];
CGFloat leftBarButtonWidth = leftBarButtonView ? [leftBarButtonView frame].size.width : (CGFloat)0.0;
也可以使用leftBarButtonView.frame.origin.x获取左边距。
我不清楚的是右边距(在我的情况下为12px)以及leftBarButtonView和titleView之间的差距,在我的情况下为6px。