11

我在导航栏上有一个 UIBarButtonItem。我想把它做成箭头形状。我的意思是我希望它是方形的,除了尖的一面。有谁知道如何做到这一点?

谢谢!

4

6 回答 6

17

我在这方面与几种方法搏斗,最后使用来自多个来源的所有答案弄清楚了。有几个技巧;这个片段将显示这一切(我正在创建一个自定义rightNavButton,但您可以轻松地将其调整为任何UIBarButtonItem):

// Produces a nice "right arrow" style button that mirrors the back arrow
// automatically added by the navController
//
UIImage *buttonImage = [UIImage imageNamed:@"forwardButton.png"];
UIButton *forwardButton = [UIButton buttonWithType:UIButtonTypeCustom];
[forwardButton setBackgroundImage:buttonImage forState:UIControlStateNormal];
[forwardButton setTitle:@"Meter" forState:UIControlStateNormal];
forwardButton.font = [UIFont boldSystemFontOfSize:12];
forwardButton.frame = CGRectMake(0, 0, buttonImage.size.width, buttonImage.size.height);
[forwardButton addTarget:self action:@selector(showMeter) 
           forControlEvents:UIControlEventTouchUpInside];

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] 
           initWithCustomView:forwardButton];

注意:事实证明,如果您在分配自定义视图后尝试直接在按钮项目上设置目标和操作UIButton,则它不会使用 - 您必须在按钮本身上设置目标和操作 - 显然navBar用途按钮逐字提供。

这是我在不透明黑色上使用的图像navBar(显然,你可以使用任何东西):http ://raretiger.com/images/forwardbutton.png

于 2010-03-12T15:53:15.770 回答
7

制作自定义背景。请参阅在 UIToolbar 上创建左箭头按钮(如 UINavigationBar 的“后退”样式)以了解如何操作。


您可以-pushNavigationItem:animated:使内置的后退按钮出现,尽管您不能为其分配自定义操作。


对于未记录的方法,您可以使用

UIButton* backButton = [UIButton buttonWithType:101];

创建一个后退“按钮”。

于 2010-02-25T08:46:53.040 回答
4

您可以使用所需的图像创建 UIImageView 或 UIButton,然后使用:

[[UIBarButtonItem alloc] initWithCustomView: arrowButton];

希望这可以帮助。

于 2010-02-25T08:34:44.747 回答
0

我的问题是重命名出现在推送视图控制器上的后退按钮。我发现了一个肮脏的解决方法,如果您忽略不理想的动画问题,您将获得一个带有所需标题的后退按钮。

诀窍是更改第一个 VC 的标题viewWillDisappear并重新设置它当然是viewWillAppear

(不用说,默认情况下,如果没有leftBarButtonItem设置,UINavigationController会显示一个返回按钮,带有推送当前VC的VC的标题)

在您推送当前 VC 的 VC 中,执行

-(void) viewWillDisappear:(BOOL) animated {
  [super viewWillDisappear:animated];
  self.title = @"Back";
}

-(void) viewWillAppear:(BOOL) animated {
  [super viewWillAppear:animated];
  self.title = @"Original Title";
}
于 2013-03-06T10:40:00.530 回答
0

继续@Plamen Dragozov 的想法:我注意到如果您将 uibutton 保持原样,它会在触摸时触发图片调整,这与普通导航返回按钮的作用完全相反。所以我所做的是取消选中“突出显示的调整图像”,它就像一个魅力。

希望这对像我这样的新手有所帮助。

于 2011-05-27T18:47:19.660 回答
0

更优雅的解决方案:

UIBarButtonItem * backButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Title" style:UIBarButtonItemStylePlain target:self action:@selector(back:)];
[backButtonItem setBackgroundImage:[UIImage imageNamed:@"back.png"]      forState:UIControlStateNormal     barMetrics:UIBarMetricsDefault];
self.navigationItem.leftBarButtonItem = backButtonItem;
于 2012-09-20T23:55:40.940 回答