出于某种原因,我为uibarbutton项目设置了自定义背景图片:
UIImage *button30 = [[UIImage imageNamed:@"nav_bar_button_orange.png"]
resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 5)];
[[UIBarButtonItem appearance] setBackgroundImage:button30 forState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
我的按钮是“跳跃”或在水平翻转时更新它的宽度(或者更准确地说是文本每侧的填充)。
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStylePlain handler:^(id sender) {
[self dismissViewControllerAnimated:YES completion:nil];
}];
忽略处理程序位,我正在使用BlocksKit。
你可以在这里看到它:http://screencast.com/t/HZRBS70OT6wt
当我在故事板中放置按钮而不是代码时,它甚至会这样做。似乎只发生在水平翻转上。
显然它与使用自定义字体有关。几乎就像它最初没有正确计算宽度一样。
Recreated the problem in this sample project。如果有人知道如何解决这个问题会很高兴。不敢相信没有人碰到它。
答案 0 :(得分:4)
我不知道这种行为的原因,但设置图片插入有助于解决此问题。
答案 1 :(得分:0)
每当你需要在bar按钮中进行ui修改时,最好用自定义视图初始化它。
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:button30 forState:UIControlStateNormal];
[button addTarget:self action:@selector(dismissFuction:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithCustomView:button];