iPhone:制作箭头形状的UIBarButtonItem
我在导航栏上有一个UIBarButtonItem。我想让它箭头形。我的意思是我希望它是正方形,除了一个尖尖的一面。有谁知道如何做到这一点?iPhone:制作箭头形状的UIBarButtonItem
谢谢!
我在这一个方面与几种方法摔跤,并最终使用来自多个来源的所有答案找出它。有几个技巧;这个片段将显示所有(我创建一个自定义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
您可以创建一个UIImageView的或用的UIButton所需要的图像,然后使用:
[[UIBarButtonItem alloc] initWithCustomView: arrowButton];
希望这有助于。
制作自定义背景。有关如何参见Creating a left-arrow button (like UINavigationBar's "back" style) on a UIToolbar。
您可能-pushNavigationItem:animated:
使内置的后退按钮出现,但你不能指定自定义操作它。
对于无证的方法,你可以使用
UIButton* backButton = [UIButton buttonWithType:101];
创建后退 “按钮”。
在继续@Plamen Dragozov的想法:我注意到,如果你离开的UIButton的是,它触摸时会触发图片调整,这与正常的导航后退按钮完全相反。所以我所做的就是取消选中“突出显示调整图像”,它就像一个魅力。
希望这能帮助像我这样的新手。
更优雅的解决方案:
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;
我的问题是重命名该推视图控制器上出现后退按钮。我发现一个肮脏的解决方法,如果你忽略了非理想的动画问题,你会得到一个带你想要的标题的后退按钮。在viewWillAppear
(不用说,在默认情况下,如果没有leftBarButtonItem
集,UINavigationController
将呈现回
关键是要改变第一个VC称号viewWillDisappear
并重新设置课程与推动当前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";
}
您可以在这里下载与Retina兼容的透明图像:[link] http://handleopenurl.com/assets/docs/arrow-buttons.zip [/ link] 后退箭头左侧有15键,5 (正常大小的按钮) – 2011-09-30 12:41:31
你有一个内存泄漏,你分配'UIBarButtonItem''保留+1',然后将它分配给属性'rightBarButtonItem''保留+1'。这意味着UIBarButtonItem现在的保留计数为2,并且永远不会被释放。你需要自动释放UIBarButtonItem: 'self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:forwardButton] autorelease];' – Camsoft 2012-01-16 10:29:41
图片链接消失了 – Esqarrouth 2014-03-03 11:23:44