UIBarButtonItem自定义背景外观翻转过渡后的“跳转”
出于某种原因,当我为uibarbutton项目设置自定义背景图片时:
UIImage *button30 = [[UIImage imageNamed:@"nav_bar_button_orange.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 5)]; [[UIBarButtonItem appearance] setBackgroundImage:button30 forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
我的button是“跳跃”或更新它的宽度(或更准确地说,在文本的每一边填充)在水平翻转。
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStylePlain handler:^(id sender) { [self dismissViewControllerAnimated:YES completion:nil]; }];
忽略处理程序位,我正在使用BlocksKit。
你可以看到它发生在这里: http : //screencast.com/t/HZRBS70OT6wt
附加信息
甚至当我把这个button放在故事板而不是代码的时候,它也会这样做。 似乎只发生在水平翻转。
原因:
显然这与使用自定义字体有关。 几乎就像它不是一开始就计算宽度。
示例项目
在此示例项目中重新创build了该问题 。 如果有人知道如何解决这个问题,会很乐意。 不能相信没有人遇到它。
我不知道这种行为的原因,但设置图像插入有助于解决这个问题。
无论何时您需要在barbutton中进行修改,最好使用自定义视图进行初始化。
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; [button setImage:button30 forState:UIControlStateNormal]; [button addTarget:self action:@selector(dismissFuction:) forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithCustomView:button];