我有一个像这样初始化的按钮>
self.button = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
target:self
action:@selector(doAction)];
稍后,我会为其附加自定义背景,就像那样>
[self.button setBackgroundImage:[UIImage imageNamed:@"customNavBar_button_right_enabled"]
forState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
并将其放在导航栏上。
[self.navigationItem setRightBarButtonItem:self.button
animated:NO];
该图像具有固定大小。我希望该按钮具有完全自定义的背景图像,无需使用 UIEdgeInsets 进行“智能”调整大小。我不需要任何调整大小。但由于某种原因,它的表现就像它的插图是事件的,并且它被调整为具有更大的宽度,大约图片的中间一半被相当程度地拉伸(stretch)以提供更宽的按钮。
为什么会这样?我怎样才能防止这种情况发生?
最佳答案
使用自定义图像实现栏按钮项目的最简单方法是:
- 将 UIButton 拖到 Storyboard上。
- 将按钮类型设置为自定义,并设置该按钮的图像。
- 将按钮拖到工具栏上。
Storyboard自动创建一个 UIBarButtonItem 并将您的 UIButton 添加为 subview 。或者,如果您不想使用 Storyboard,您可以实现以下内容:
// Initialize the UIButton
UIImage *buttonImage = [UIImage imageNamed:@"buttonImage.png"];
UIButton *aButton = [UIButton buttonWithType:UIButtonTypeCustom];
[aButton setImage:buttonImage forState:UIControlStateNormal];
aButton.frame = CGRectMake(0.0, 0.0, buttonImage.size.width, buttonImage.size.height);
// Initialize the UIBarButtonItem
UIBarButtonItem aBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:aButton];
// Set the Target and Action for aButton
[aButton addTarget:self action:@selector(aButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
希望对你有帮助!
编辑:不要忘记将 aBarButtonItem 添加到 UIToolbar。
关于objective-c - BarButtonItem 因未知原因调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13073170/