ios - 自定义 UIBarButtonItem

标签 ios objective-c uinavigationbar uibarbuttonitem

我正在尝试创建一个自定义 UIBarbuttonItem,它仅使用具有透明度的 png,这样我只有一个图标作为按钮。当我尝试设置按钮图像,将背景设置为白色,并将样式设置为 Plain 时,我仍然会在其周围看到内部阴影和黑色边框。

什么给了?

enter image description here

我已经尝试了下面的代码,它仍然在它周围放置了黑色边框。

UIImage *background = [UIImage imageNamed:@"Dismiss_normal.png"];
UIImage *backgroundSelected = [UIImage imageNamed:@"Dismiss_selected.png"];
self.closeButton = [UIButton buttonWithType:UIButtonTypeCustom];
[self.closeButton addTarget:self action:@selector(closeButtonPressed:) forControlEvents:UIControlEventTouchUpInside]; //adding action
[self.closeButton setBackgroundImage:background forState:UIControlStateNormal];
[self.closeButton setBackgroundImage:backgroundSelected forState:UIControlStateSelected];
self.closeButton.frame = CGRectMake(0 ,0,background.size.width, background.size.height);
self.closeButtonItem = [[UIBarButtonItem alloc] initWithCustomView:self.closeButton];
self.navigationItem.leftBarButtonItem = self.closeButtonItem;

我注意到,如果我对按钮进行模态转换,上面的代码周围仍然有黑色边框,但是如果我进行推送转换,它就没有了吗?什么鬼?

最佳答案

您必须将按钮类型设置为自定义,并将图标图像设置为按钮背景。 示例代码:

UIImage *background = [UIImage imageNamed:@"icon.png"];
UIImage *backgroundSelected = [UIImage imageNamed:@"icon_selected.png"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button addTarget:self action:@selector(checkButtonTapped:event:) forControlEvents:UIControlEventTouchUpInside]; //adding action
[button setBackgroundImage:background forState:UIControlStateNormal];
[button setBackgroundImage:backgroundSelected forState:UIControlStateSelected];
button.frame = CGRectMake(0 ,0,35,35);

然后像这样将此按钮设置为您的 BarButtonItem:

UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithCustomView:button];
self.navigationItem.leftBarButtonItem = barButton;

关于ios - 自定义 UIBarButtonItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16976480/

相关文章:

ios - CFHTTPMessageAddAuthentication 无法将身份验证数据添加到请求

ios - 为什么 "loadNibNamed"方法返回数组?

swift - SlackTextViewController 会干扰导航栏吗?

ios - 如何关闭导航栏中文本字段调用的键盘?

ios - 设置一个对象属性以匹配另一个

iphone - UINavigationController 不弹出 UINavigationBar 项目

ios - 如何从 AFNetworking 中的 POST 请求中读取一个简单的字符串(无 JSON)

ios - Xcode 在设置 "xcode-select -switch"后停止工作

ios - 触摸屏幕/控件时移动

ios - 如何将已编程的按钮声明为 var