2017-12-12 14 views
0

코드는 내가 그것을 구경에게 무엇을 할 수, iOS 11 - rightBarButtonItems의 위치를 ​​변경하는 방법은 무엇입니까? 아이폰 OS 10 또는 이전에

UIButton *btn1 = [UIButton buttonWithType:UIButtonTypeCustom]; 
[btn1 setTitle:@"yyyyy" forState:UIControlStateNormal]; 
[btn1 setTitleColor:[UIColor blueColor] forState:UIControlStateNormal]; 
[btn1 sizeToFit]; 
UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithCustomView:btn1]; 

UIBarButtonItem *fixed = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemFixedSpace target:nil action:nil]; 
fixed.width = -22; 

self.navigationItem.rightBarButtonItems = @[fixed, item1]; 

enter image description here

내가 아이폰 OS 11에서 같은 일을 수행하려는 경우

을 일한다?

+0

를? 왜 폭이 음수입니까? – rmaddy

+0

[iOS 11의 탐색 바에서 UIBarButtonItem의 제외 어 spacer] (https://stackoverflow.com/questions/45544961/negative-spacer-for-uibarbuttonitem-in-navigation-bar-on-ios-11) – pckill

+0

의 가능한 복제본 @rmaddy는 코드 'fixed.width = -22;'이기 때문에 – CoderYL

답변

0

우리는 UINavigationBar를 서브 클래 싱하여이를 acomplished 한 :

#import <UIKit/UIKit.h> 

@interface InsetButtonsNavigationBar : UINavigationBar 

@end 

및 설정 layoutMargins 당신이 아이폰 OS 10을 실행하는 아이폰 7 플러스에서 무엇을 볼 수 있습니까

#import "InsetButtonsNavigationBar.h" 

@implementation InsetButtonsNavigationBar 

- (void)layoutSubviews { 

    [super layoutSubviews]; 

    for (UIView * view in self.subviews) { 

     view.layoutMargins = UIEdgeInsetsMake(0, 8, 0, 8); 

    } 

} 

@end