乐趣区

关于ios:iOSnavigationItemtitleView不居中的解决办法

当咱们对导航栏的题目的视图进行设置的时候,如果 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 导致的无奈居中问题。

退出移动版