[英]How do I set a custom view back button
在View Controller A中,在viewDid加載中,我具有以下內容:
UIImage * backButtonImage = [UIImage imageNamed: @"bar-arrow"];
UIBarButtonItem* b = [[UIBarButtonItem alloc] initWithImage:backButtonImage style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.backBarButtonItem = b;
仍在下一個視圖控制器的導航中。 酒吧我得到這個:
換句話說,仍顯示IOS7的原始后退箭頭。 無法擺脫它!
通常從NativationBar隱藏默認的后退按鈕:
[self.navigationItem setHidesBackButton:YES animated:YES];
[self.navigationItem setHidesBackButton:YES];
並執行以下代碼:
UIButton *BackButton = [UIButton buttonWithType:UIButtonTypeCustom];
[BackButton setImage:[UIImage imageNamed:@"bar-arrow"] forState:UIControlStateNormal];
[BackButton addTarget:self action:@selector(prevButtonAction)forControlEvents:UIControlEventTouchUpInside];
[BackButton setFrame:CGRectMake(0, 0, 12, 20)];// set as par your need
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithCustomView:BackButton];
self.navigationItem.leftBarButtonItem = barButton;
-(void)prevButtonAction
{
[self.navigationController popViewControllerAnimated:YES];
}
如果您想保留后退按鈕功能而只更改人字形圖像(並且僅針對iOS 7.0及更高版本),則可以按以下方式更改圖像:
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationController.navigationBar.backIndicatorImage = [UIImage imageNamed:@"bar-arrow"];
self.navigationController.navigationBar.backIndicatorTransitionMaskImage = [UIImage imageNamed:@"bar-arrow-transition-mask"];
}
或者,如果您要UINavigationController
,則建議這樣做:
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationBar.backIndicatorImage = [UIImage imageNamed:@"bar-arrow"];
self.navigationBar.backIndicatorTransitionMaskImage = [UIImage imageNamed:@"bar-arrow-transition-mask"];
}
...,其中“ bar-arrow-transition-mask”圖像是代表另一個圖像“ bar-arrow”的可見性的圖像。 在此蒙版圖像中,alpha值為零的像素將在過渡期間完全隱藏運動標題,而alpha值為1的像素將完全顯示運動標題。
盡管這將需要您制作新圖像,但它應該非常快速且易於制作,並且該解決方案保留了所有導航欄功能,而不會弄亂leftBarButtonItem
或leftBarButtonItems
以及添加對popViewControllerAnimated:
手動調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.