【问题标题】:Show UIBarButtonItem just like Apple's iPad Mail App像 Apple 的 iPad Mail App 一样显示 UIBarButtonItem
【发布时间】:2012-06-29 07:31:02
【问题描述】:

Apple 的 iPad Mail 应用有几个图标嵌入navigationItemsetRightBarButtonItems 区域中拆分视图控制器的详细视图:

我怎样才能像这样向 navigationItem 栏添加图标(我已经有了图标)。

我的问题是 UIBarButtonItem 类引用似乎没有适当的 UIBarButtonItemStyle 允许按钮周围没有边框。我尝试通过 initWithCustomView 配置 UIBarButtonItem 但点击按钮不起作用。

提前感谢您的任何建议

干杯

编辑:我可以使用 UIBarButtonItemStylePlain,但它看起来不像苹果按钮那样“嵌入”,这是我所追求的外观。

【问题讨论】:

  • 默认UIBarButtonItemStylePlain有什么问题?
  • 嗨,大卫,感谢您的回复。我已经编辑了原始帖子以显示 UIBarButtonItemStylePlain 的结果。不幸的是,这不是我想要实现的外观。
  • 看起来像带边框的样式,你确定它设置正确吗?在某些情况下,不支持普通样式。
  • 他们可能将其用作 UINavBar,但将其隐藏并仅将按钮作为普通 UIButtons 放入。您可以设置 navbarhidden 属性并做任何您想做的事情。这样你就有了更多的控制权。

标签: objective-c


【解决方案1】:

我已经解决了,可以产生以下结果:

这是我使用的代码。它可以进行优化,但是为了演示目的,它很好且重复:

- (void)setupNavigationItemButtons {

float buttonWidth = 60;
float buttonHeight = 40;

UIImage *imageA = [UIImage imageNamed:@"212-action2.png"]; 
UIImage *imageB = [UIImage imageNamed:@"111-user.png"];
UIImage *imageC = [UIImage imageNamed:@"122-stats.png"];

UIButton *buttonA = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, buttonWidth, buttonHeight)];
UIButton *buttonB = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, buttonWidth, buttonHeight)];
UIButton *buttonC = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, buttonWidth, buttonHeight)];

[buttonA addTarget:self action:@selector(doSomething:)      forControlEvents:UIControlEventTouchUpInside];
[buttonB addTarget:self action:@selector(doSomethingElse:)  forControlEvents:UIControlEventTouchUpInside];
[buttonC addTarget:self action:@selector(doSomethingRandom:)forControlEvents:UIControlEventTouchUpInside];

[buttonA setImage:imageA forState:UIControlStateNormal];
[buttonB setImage:imageB forState:UIControlStateNormal];
[buttonC setImage:imageC forState:UIControlStateNormal];

UIBarButtonItem *buttonItemA = [[UIBarButtonItem alloc] initWithCustomView:buttonA];
UIBarButtonItem *buttonItemB = [[UIBarButtonItem alloc] initWithCustomView:buttonB];
UIBarButtonItem *buttonItemC = [[UIBarButtonItem alloc] initWithCustomView:buttonC];

[self.navigationItem setRightBarButtonItems:[NSArray arrayWithObjects:buttonItemA, buttonItemB, buttonItemC,nil]];

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 2023-02-10
    • 2016-12-01
    • 2013-09-18
    • 1970-01-01
    相关资源
    最近更新 更多