当我们对导航栏的标题的视图进行设置的时候,如果titleView的尺寸太大,由于两侧的rightBarButtonItem和leftBarButtonItem的挤压,会导致titleView不居中。
网上找了许多方法,都是用到计算的尺寸实现的,太过繁琐。最后终于找到一个解决的办法。使用NSLayoutConstraint
对titleView进行设置其尺寸即可解决问题。
原代码:
UIView *titleView = [[UIView alloc] init];
titleView.frame = CGRectMake(0, 0, 200, 44);
self.navigationItem.titleView = titleView;
更改后的代码:
UIView *titleView = [[UIView alloc] init];
NSLayoutConstraint *constraint1 = [NSLayoutConstraint constraintWithItem:titleView attribute:(NSLayoutAttributeHeight) relatedBy:(NSLayoutRelationEqual) toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:44];
NSLayoutConstraint *constraint2 = [NSLayoutConstraint constraintWithItem:titleView attribute:(NSLayoutAttributeWidth) relatedBy:(NSLayoutRelationEqual) toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:200];
[titleView addConstraint:constraint1];
[titleView addConstraint:constraint2];
self.navigationItem.titleView = titleView;
通过NSLayoutConstraint设置之后的尺寸可以完美适配因为titleView宽度太多挤压两边的navigationItem导致的无法居中问题。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。