【发布时间】:2016-03-02 17:14:31
【问题描述】:
我正在尝试在导航栏中使用自定义按钮,没有左右空格作为边框,如下图所示:
这是创建 te barButton 的代码:
UIImage *backImage = [UIImage imageNamed:@"back"];
UIImage *backImageTapped = [UIImage imageNamed:@"back_tap"];
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
[backButton setImage:backImage forState:UIControlStateNormal];
[backButton setImage:backImageTapped forState:UIControlStateHighlighted];
backButton.frame = CGRectMake(0, 0, 44, 44);
[backButton addTarget:self
action:@selector(backTaped)
forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *backBarButton =[[UIBarButtonItem alloc] initWithCustomView:backButton];
[self.navigationItem setLeftBarButtonItem:backBarButton];
我使用 UINavigationItem 扩展删除了空格,该扩展插入了一个负宽度的 barButtomItem:
UIBarButtonItem *space = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
space.width = -16;
return space;
此时看起来不错,但问题是两个按钮的可点击区域不是每个图像的大小,而是更大,类似于下一张图像的灰色区域:
我已经阅读了很多问题,试图通过更改 hitTestEdgeInsets (https://stackoverflow.com/a/13067285/3560424) 或覆盖 - (UIEdgeInsets)alignmentRectInsets 的 UIButton 类别来解决它,但似乎没有什么可以为我解决...
提前感谢您的帮助
【问题讨论】:
-
嗨,你可以试试下面的代码:- UIButton *backButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, button_width, button_height)]; [backButton setImage:[UIImage imageNamed:@"back.png"] forState:UIControlStateNormal]; [backButton addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside]; self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
标签: ios objective-c uinavigationbar uibarbuttonitem uinavigationitem