2013-04-27 12 views
15
私はこのイメージに私のUINavigationBarに戻るボタンを設定したい

:私はイメージが標準バックボタン画像に埋め込むことがしたくない設定ナビゲーションバーのバックボタン画像

enter image description here

、Iこの画像を表示したいだけです。

私が使用することができ、他の質問を見てから知っている:戻るボタンの背景画像を設定する

[[UIBarButtonItem appearance] setBackButtonBackgroundImage:barButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 

。しかし、これは画像が引き伸ばされる原因となり、この特定の画像は伸びるのに適したものではありません。

ボタンイメージをイメージに置き換える方法はありますか?

私はiOS 5.0以降をサポートしています。 UIBarButtonItem setBackButtonBackgroundImage:forState:barMetrics:のためのドキュメントから

答えて

5

:良い結果を得るために

、backgroundImageのは、伸縮性の画像でなければなりません。

ですので、伸縮性にしてください。私。画像のどの部分を引き伸ばすことができるか、さらに重要なのはどの部分を引き伸ばすことができないかを指定します。 あなたの場合、これは画像の端(矢印を含まない部分)になります。

UIImage resizableImageWithCapInsets:

代替は、それがスケーリングされる必要がないことを意味サイズである画像の数(各バーメトリックに対して1つ)を供給することです。 raywenderlich user-interface-customization。しかし、あなたは何が起こるかを制御できるように、画像をストレッチ可能にしたいと思っています。

動作するストレッチ仕様が見つからない場合は、各ビューコントローラのインスタンスごとにテンプレートの戻るボタン項目を作成し、ナビゲーション項目にbackBarButtonItemとして設定します。

+0

おかげで、この

let backBtn = UIBarButtonItem() let image: UIImage = UIImage(named: "your_image_name")! backBtn.image = image backBtn.action = #selector(popSelf) backBtn.target = self navigationItem.leftBarButtonItem = backBtn 

は、次の関数を作成して貼り付けます。私は伸縮性のある画像を作るのに慣れていますが、私の画像から見ると、水平に伸ばすとうまく見えません。背景画像を設定するだけでなく、ボタン画像を置き換えることができるかどうかを知りたい。 – Darren

+0

伸縮可能な画像を作成するときは、伸縮する部分と伸ばさない部分を指定します。矢印を含む画像の部分が引き伸ばされておらず、周りのエッジがあることを設定するだけです。 – Wain

+0

ああ、私はあなたの答えを誤解して申し訳ありませんが表示されます。しかし、イメージの中心を伸ばしたり、エッジを引き伸ばすことは可能ですか?私はresizableImageWithCapInsetsあなたが伸ばされない画像のエッジを設定することができたと思った。どのようにしてエッジが伸縮可能であるが、中心はできないイメージを作成できますか? – Darren

39

iOS 7以降では、backIndicatorImageプロパティをUINavigationBarに設定すると、カスタムインジケータイメージを設定する必要があります。また、backIndicatorTransitionMaskImageを提供する必要があります(両方に同じ画像を使用できます)。

スウィフト

UINavigationBar.appearance().backIndicatorImage = UIImage(named: "back-button-image") 
UINavigationBar.appearance().backIndicatorTransitionMaskImage = UIImage(named: "back-button-image") 

のObjective-C

+0

更新情報をありがとう。 – Darren

2
[[UINavigationBar appearance] setBackIndicatorImage:[UIImage imageNamed:@"back-button-image"]]; 
[[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:[UIImage imageNamed:@"back-button-image"]]; 

SWIFTバージョン: -

self.navigationController?.navigationBar.backIndicatorImage = UIImage(named: "[email protected]") 
    self.navigationController?.navigationBar.backIndicatorTransitionMaskImage = UIImage(named: "[email protected]") 
    self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: nil, action: nil) 

のviewDidLoad(にこれを置く)

1

のviewDidLoadで

スウィフト3の場合はお返事やドキュメントリンク用

func popSelf() { 
    navigationController?.popViewController(animated: true) 
    // do your stuff if you needed 
} 
関連する問題