輕掃/後退手勢請看下面的編輯!
我不久前在iOS7中創建了一個自定義後退按鈕。我的箭頭和單詞背靠它。我認爲帕萬的建議是一個好的開始。要創建自定義映像後退按鈕就可以使用,
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self action:@selector(backButtonClicked)];
[backButton setBackgroundImage:finalImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[backButton setTitlePositionAdjustment:UIOffsetMake(-20, 0) forBarMetrics:UIBarMetricsDefault];
self.navigationItem.leftBarButtonItem = backButton;
我的形象finalImage是兩個不同圖像的合成,但是你可以用你的「回」的形象。但我認爲這是問題所在。我的圖像是一個複合圖像,您可能也想製作複合圖像,但在背部圖標上方放置一個清晰的空間。我在我的圖標右側放置了一個清晰的空間來調整它的間距。下面是代碼,
UIImage *arrow = [UIImage imageNamed:@"back.png"];
UIImage *wordSpace = [UIImage imageNamed:@"whiteSpace.png"];
CGSize size = CGSizeMake(arrow.size.width + wordSpace.size.width, arrow.size.height);
UIGraphicsBeginImageContext(size);
[arrow drawInRect:CGRectMake(0, 0, arrow.size.width, size.height)];
[wordSpace drawInRect:CGRectMake(arrow.size.width, 0, wordSpace.size.width, wordSpace.size.height)];
UIImage *finalImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
的圖像wordSpace是一個明確的PNG,我在Photoshop做,所以我的新的後退按鈕圖像不拉伸。您可能想要在頂部放置一個清晰的png,將圖標向下推一點。使用photoshop中的大小,高度爲你認爲的調整應該是什麼。你可能需要付出一點努力。並確保更改CGSize,使其適合您的圖標和清晰的空間。
我的背單詞是有點過了,所以我看着
[backButton setTitlePositionAdjustment:UIOffsetMake(-20, 0) forBarMetrics:UIBarMetricsDefault];
我不得不玩的是線位,使它看起來儘可能好,但它終於給了我什麼,我想與-20。我甚至調整了我的第二個變量0,這實際上移動了圖標。 -5將圖標向下放到遠處,但是它從清晰的PNG中選擇另一個選項。
現在要處理的事實,你希望它是一個實際的後退按鈕。看看我發佈的第一行代碼。按鈕上的動作是@selector(backButtonClicked)。所以你所要做的就是制定這個方法,你應該很好去!
- (void)backButtonClicked
{
NSLog(@"going back");
[self.navigationController popViewControllerAnimated:YES];
}
希望這會有所幫助。
編輯*****
我玩弄我的代碼一點點,找到了一個更好的辦法來移動回圖標。我只是用了一個輪子,因爲我沒有和你一樣的輪子,但它的工作原理是一樣的。
既然你真的不希望你可以用這個代碼創建按鈕標題,
UIImage *image = [UIImage imageNamed:@"781-ships-wheel.png"];
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStylePlain target:self action:@selector(backButtonClicked)];
只要改變781東西你圖標的名稱。然後你可以用下面的方式移動它,
[backButton setImageInsets:UIEdgeInsetsMake(20, 0, -20, 0)];
看看這張圖片。
這顯示圖標下來很大,但是我想告訴你的想法。邊緣插圖的編號是「頂」,「左」,「底」和「右」。如果您不需要這樣移動它,請勿觸摸左側和右側,更改頂部和底部。不過要注意的是,如果你需要像我一樣將它向下移動20點,(太多),你需要抵消底部的負值,否則圖標會被壓縮。這就是所有零的情況。
所以你幾乎可以將它無論你想去的地方,但你仍然要建立@selector(backButtonClicked),使它象真正的後退按鈕的工作。
你應該考慮 「的UIImage *後退按鈕= [[UIImage的imageNamed:@」 blueButton「] resizableImageWithCapInsets:UIEdgeInsetsMake(12,12,12, 12)];」然後將此圖像設置爲後退按鈕。 – Pawan
如果我這樣做,「ios7-back-gesture」不起作用 – Bernat
你在這裏提供了什麼插圖「UIEdgeInsetsMake(12,12,12,12)」。您需要根據您的要求進行更改。請按照此[參考鏈接](http://iosdevelopertips.com/user-interface/ios-5-customize-uinavigationbar-and-uibarbuttonitem-with-appearance-api.html) – Pawan