1

アプリにカスタムの戻るボタンを実装しようとしています。「戻る」タイトルや、前のVCのタイトルが何であれ、私は望んでいません。代わりに、すべてのVCの添付イメージのように見せたいだけです。

UIBarButtonItemの外観プロキシでsetBackButtonBackgroundImageを使用してみましたが、画像が置き換えられますが、まだ「戻る」ラベルが表示されており、それを取り除く方法がわかりません。

これを実装するためのベストプラクティスについて誰かアドバイスがありますか?ある種のUINavigationControllerサブクラスが必要ですか?それとも、過去に人々が使用しているのを見たカスタムのbackメソッドルートを使用してsetLeftBarButtonItemに移動する必要がありますか(ハッキーのようです)?どんな助けでも大歓迎です。

カスタム戻るボタンの画像

4

2 に答える 2

0

UIButtonを左のBarButtonItemのサブビューとして、必要なアクションと画像を入れてみてください。すべてがうまくいきます:)(少し編集する必要があるかもしれませんが、それはロケット科学ではありません:P)

于 2013-01-28T11:21:35.913 に答える
0

私のプロジェクトの多くで、テキストのないアイコンだけのカスタムの戻るボタンを使用しています。私は最善の方法を見つけるためにいくつかの実験を行い、以下の方法を思いつきました(これが最善の方法または唯一の方法であると言っているわけではありませんが、それは私にとってはうまくいき、安定しています)。

私の考えは、標準の戻るボタンのスタイルを変更するルート ViewController を実装することでした。これは簡単なことではありませんでした。さまざまなオプションをいじって約1日後、ようやく実用的なソリューションにたどり着きました。

秘訣は、十分に大きな透明な背景を用意し (実際のバック シェブロンよりも大きい場合は小さいサイズにサイズ変更されます)、シェブロンにカスタム イメージを使用することです。

これは機能しますが、以下の測定値でわかるように、小さな欠点があります。左側に余分な 14 ポイントのギャップがあります。右側に一致するボタンが必要な場合は、これを 14 ポイント補正する必要があります (はい、そのポイントなので、網膜では 28 ピクセルです...)

ここに画像の説明を入力

これは私のコードです:

//this vc implements a custom back button, you can make this a root controller
//from which you inherit all your view controllers. But for simplicity reasons for this explanation
//I skipped this

class VCRoot: UIViewController {

 override func viewDidLoad() {
  //call supers
  super.viewDidLoad()
  //create custom back item
  let backItem = UIBarButtonItem()
  //as image set the back chevron icon its a 22x22 points (so 44x44 in retina)
  backItem.image=PaintCode.imageOfBarBtnBack
  let b = PaintCode.imageOfBarBtnBackgroundEmpty
  //as background I use a 1 = 33 points (so 2x66 retina) fully transparant image
  backItem.setBackButtonBackgroundImage(b, forState: UIControlState.Normal, barMetrics: UIBarMetrics.Default)
  //set the newly created barbuttonitme as the back button
  navigationItem.backBarButtonItem=backItem
 }
}

//this vc puts a "forwards" button in the navbar on the right with a matching arrow
//The image of this matching forward arrow is the correct size (width!) so that its the same
//distance from the edge of the screen as the back button
 
class VC2: UIViewController {
 
 //outlet to the barbutton item from IB
 @IBOutlet weak var barbtn: UIBarButtonItem!
 
 override func viewDidLoad() {
  //call supers
  super.viewDidLoad()
 //the forward chevron in the image is shifted 14 points (so 28 retina) to the left 
 //so it has same distance from edge => its (22+14) x 22 = 36 x 22 points (72 x 44 retina) 
  barbtn.image=PaintCode.imageOfBarBtnForward
 }
}

ここで私のブログを参照することもできます: http://www.hixfield.net/blog/2015/05/adding-a-custom-back-button-the-standard-way/

于 2015-06-07T13:43:53.927 に答える