1

出于某种原因,当我为 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

附加信息

当我将按钮放在故事板而不是代码中时,它甚至会这样做。似乎只发生在水平翻转上。

原因:

显然它与使用自定义字体有关。几乎就像它一开始没有计算宽度一样。

示例项目

在此示例项目中重新创建了问题。如果有人知道如何解决这个问题会很高兴。不敢相信没有人遇到过。

4

2 回答 2

4

我不知道这种行为的原因,但设置图像插入有助于解决这个问题。 在此处输入图像描述

于 2013-03-07T21:40:02.757 回答
0

每当您需要在栏按钮中进行 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];
于 2013-03-07T01:24:36.963 回答