【问题标题】:UIBarButtonItem with UIButton as CustomView Strange issueUIBarButtonItem 与 UIButton 作为 CustomView 奇怪的问题
【发布时间】:2016-06-10 15:54:24
【问题描述】:

我正在使用itiWithCustomView 方法创建UIBarButtonItem 作为rightBarButtonItem,其中customViewUIButtoncontentHorizontalAlignment 作为UIControlContentHorizontalAlignmentRight
barbuttonitem 工作正常。
但是在一个push popviewcontroller操作之后,barbuttonitem点击区域大大减少了(我认为不超过3-4像素)。
请帮我解决这个问题

UIImage *filterImage = [UIImage imageNamed:@"filter"]; UIButton *filterButton = [UIButton buttonWithType:UIButtonTypeCustom];
filterButton.frame = CGRectMake(0, 0, 44, 44);
filterButton.showsTouchWhenHighlighted = YES; [filterButton setImage:[UIImage imageNamed:@"filter"] forState:UIControlStateNormal];
[filterButton addTarget:self action:@selector(filterTapped:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *filterItem = [[UIBarButtonItem alloc]initWithCustomView:filterButton];
self.navigationItem.rightBarButtonItem = filterItem;

【问题讨论】:

  • 请至少添加一段代码。
  • 这里的信息太少了。
  • 如果我在 viewDidLoad 中添加按钮会出现问题,如果我在 viewWillAppear 中添加代码则没有问题。这种模棱两可的行为有什么原因吗?

标签: ios objective-c uinavigationcontroller uibutton uibarbuttonitem


【解决方案1】:

我认为您为将条形按钮移动到右侧一点点分配了对齐方式。取而代之的是,您可以尝试遵循 sn-p。它可能会解决您的问题。

self.navigationItem.rightBarButtonItem = nil;
self.navigationItem.rightBarButtonItems = [self setRightBarButtonWithTarget:self action:@selector(topRightButtonClick) image:@"imagename"];

以及创建创建右栏按钮的常用方法

- (NSArray *)setRightBarButtonWithTarget:(id)target action:(SEL)action image:(NSString *)imgName
{
    UIButton *rightBtn = [UIButton buttonWithType:UIButtonTypeCustom];
    rightBtn.backgroundColor = [UIColor clearColor];
    [rightBtn setImage:[UIImage imageNamed:imgName] forState:UIControlStateNormal];
    [rightBtn addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
    rightBtn.frame = CGRectMake(0, 0, 26, 26);

    UIBarButtonItem *negativeSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
    negativeSpace.width = -5;
    UIBarButtonItem *homeButton = [[UIBarButtonItem alloc] initWithCustomView:rightBtn];

    NSArray *arrBarItems = [NSArray arrayWithObjects:negativeSpace, homeButton, nil];
    return arrBarItems;
}

【讨论】:

  • 感谢这个绝妙的建议,但请参阅我在问题中的评论。您的解决方案不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-22
  • 1970-01-01
  • 2016-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多