rya*_*ang 7 iphone objective-c ios ios11
我UINavigationBar
在iOS 11中发现了一个错误.在viewDidLoad中使用了快速设置导航项按钮self.navigationItem.rightBarButtonItems = @[fixSpaceItem, item]
.并且使用手势回弹,但是我没有回弹,当弹出回来时,我释放我的手指并让视图控制器取消弹回,然后右侧导航按钮项目消失.左项按钮具有相同的问题.要重现此错误,您必须添加fixSpaceItem [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]
.而真正的设备,但不是模拟器可以重现错误.这是我的主要代码:
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
self.navigationController.interactivePopGestureRecognizer.delegate = self;
self.navigationItem.rightBarButtonItems = @[[self negativeSpacerWithWidth:5],[self rightButton]];
self.navigationItem.leftBarButtonItems = @[[self negativeSpacerWithWidth:5], [self leftButton]];
}
- (UIBarButtonItem *)leftButton {
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 35, 35)];
[button setImage:[UIImage imageNamed:@"icon_app_back_normal"] forState:UIControlStateNormal];
[button addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:button];
return item;
}
- (UIBarButtonItem *)rightButton {
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 35, 35)];
[button setImage:[UIImage imageNamed:@"setting"] forState:UIControlStateNormal];
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:button];
return item;
}
- (UIBarButtonItem *)negativeSpacerWithWidth:(CGFloat)width {
UIBarButtonItem *spacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
[spacer setWidth:width];
return spacer;
}
Run Code Online (Sandbox Code Playgroud)
FixedSpace BarButtonItem
当您添加到时,这似乎是一个错误BarButtonItem array
。如果要设置导航项的偏移量,可能必须使用其他方法,例如更改按钮的 imageEdgeInsets。
- (void)viewDidLoad {
[super viewDidLoad];
// Do not set Fixed Space type button item.
self.navigationItem.leftBarButtonItem = [self leftButton];
self.navigationItem.rightBarButtonItem = [self rightButton];
// It work too
//self.navigationItem.leftBarButtonItems = @[[self leftButton], [self leftButton]];
//self.navigationItem.rightBarButtonItems = @[[self rightButton], [self rightButton]];
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
self.navigationController.interactivePopGestureRecognizer.delegate = self;
}
- (UIBarButtonItem *)leftButton
{
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 35, 35)];
//...
// to add offset you want
button.imageEdgeInsets = UIEdgeInsetsMake(0, -15, 0, 15);
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:button];
return item;
}
- (UIBarButtonItem *)rightButton
{
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 35, 35)];
//...
// to add offset you want
button.imageEdgeInsets = UIEdgeInsetsMake(0, 15, 0, -15);
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:button];
return item;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6045 次 |
最近记录: |