我想在UIToolbar中创建一个“后退”左箭头边框按钮。

据我所知,获得其中一个的唯一方法是将UINavigationController保留在默认设置,它使用一个用于左侧栏项。但没有办法我可以找到创建一个作为一个UIBarButtonItem,所以我不能在一个标准的UIToolbar,即使他们非常类似于UINavigationBars。

我可以用按钮图像手动创建它,但我在任何地方都找不到源图像。它们有alpha通道边缘,所以截图和剪切不会得到非常通用的结果。

对于我打算使用的每种尺寸和配色方案,除了截图之外还有什么想法吗?

更新:请停止回避问题,并建议我不应该问这个,应该使用UINavigationBar。我的应用程序是Instapaper Pro。它只显示了一个底部工具栏(以节省空间和最大化可读内容区域),我希望在底部放置一个左箭头形状的后退按钮。

告诉我,我不需要这样做不是答案,当然也不值得赏金。


当前回答

我有一个类似的问题,并拿出一个库PButton。示例是类似于后退导航按钮的按钮,它可以像自定义按钮一样在任何地方使用。

就像这样:

其他回答

警告:有报道称这将无法在iOS 6上运行。这可能只适用于较旧版本的操作系统。显然,至少有一名开发者的应用因为使用这种技巧而被拒绝。使用风险自负。使用图像(见上面的答案)可能是一个更安全的解决方案。

这可以在不添加您自己的图像文件使用sekr1t按钮类型101来获得正确的形状。对我来说,窍门是找出我可以使用initWithCustomView来创建BarButtonItem。我个人需要这个动态导航栏而不是工具栏,但我用工具栏测试了它,代码几乎是一样的:

// create button
UIButton* backButton = [UIButton buttonWithType:101]; // left-pointing shape!
[backButton addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside];
[backButton setTitle:@"Back" forState:UIControlStateNormal];

// create button item -- possible because UIButton subclasses UIView!
UIBarButtonItem* backItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];

// add to toolbar, or to a navbar (you should only have one of these!)
[toolbar setItems:[NSArray arrayWithObject:backItem]];
navItem.leftBarButtonItem = backItem;

如果您在工具栏上执行此操作,则必须调整设置项的方式,但这取决于您的其余代码,我将其作为读者的练习。这个样例为我工作(编译和运行)。

等等,阅读HIG,不要使用未记录的特性,等等。只有六种支持的按钮类型,这不是其中之一。

    self.navigationItem.leftBarButtonItem = self.navigationItem.backBarButtonItem;

对我有用。我使用这个当我有更多的标签,然后可以在标签栏上,和一个视图控制器从“更多”推覆leftBarButtonItem在它的viewDidLoad。

好吧,你不必为每个大小都有不同的按钮,你可以使用[UIImage stretchableImageWithLeftCapWidth:topCapHeight:],但我唯一发现的是自定义图像。

你为什么要这么做?如果你想要一个看起来像导航栏的东西,使用UINavigationBar。

工具栏具有与之相关的特定视觉样式。iPhone的人机界面指南如下:

一个工具栏出现在屏幕的底部边缘,其中包含执行与当前视图中的对象相关的操作的按钮。

然后,它给出了几个没有文本的大致方形图标的视觉示例。我强烈建议你在这件事上遵循HIG。

在Xcode 5.x中使用Interface Builder很容易做到

使用对象库中的工具栏和栏按钮项 在按钮的属性检查器编辑图像部分 你的后退按钮图像

完成了!