2017-09-22 74 views
1

我尝试在导航栏中设置具有不同大小图像的UIBarButtonItem。所以我创建了一个基于UIBarButtonItem的自定义视图,并将自定义视图的框架设置为约束UIBarButtonItem的宽度。它一直工作顺利,我更新了软件到iOS 11.这设置自定义视图对约束实现的UIBarButtonItem的宽度帧之前似乎不再有用iOS上的11在iOS导航栏中约束UIBarButtonItem的大小11

我使用的图像defaultImage与120 * 120:

UIButton *leftCustomButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 35, 35)]; 

[leftCustomButton setImage:[UIImage imageNamed:@"defaultImage"] forState:UIControlStateNormal]; 

UIBarButtonItem * leftButtonItem =[[UIBarButtonItem alloc] initWithCustomView:leftCustomButton]; 

self.navigationItem.leftBarButtonItems = @[self.headerIconItem]; 

在iOS10,iOS9上,leftBarButtonItem的图像没有拉伸。它显示的一样:

show on iOS 10

但leftBarButtonItem的图像被拉伸的iOS11。它显示在下面的图片中。

show on iOS 11

有有一些方法来约束的UIBarButtonItem的导航栏宽度在iOS上11?

回答

3

与iOS 11 UIBarButtonItem首发现在布局使用自动排版引擎,在您的案件中定位iOS 11时,你应该这样说:

UIButton *leftCustomButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 35, 35)]; 

[leftCustomButton.widthAnchor constraintEqualToConstant:35].active = YES; 
[leftCustomButton.heightAnchor constraintEqualToConstant:35].active = YES; 

[leftCustomButton setImage:[UIImage imageNamed:@"defaultImage"] forState:UIControlStateNormal]; 
UIBarButtonItem * leftButtonItem =[[UIBarButtonItem alloc] initWithCustomView:leftCustomButton]; 
self.navigationItem.leftBarButtonItems = @[self.headerIconItem]; 

欲了解更多信息,你应该看到Updating Your App for iOS 11 WWDC 2017年会话。

+0

这很有用!我正在赶上更新,谢谢! – Stoull