web-dev-qa-db-ja.com

ナビゲーションバーの戻るボタンの画像を設定する

UINavigationBarの戻るボタンを次の画像に設定したいと思います。

enter image description here

標準の戻るボタンの画像に画像を埋め込みたくないので、この画像を表示したいだけです。

私が使用できる他の質問を見るとわかります:

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

戻るボタンの背景画像を設定します。しかし、これにより画像が引き伸ばされ、この特定の画像は、私が知る限り、引き伸ばすのに適していません。

戻るボタンの画像を自分の画像に置き換える方法はありますか?

IOS5.0以降をサポートしています。

17
Darren

IBarButtonItem setBackButtonBackgroundImage:forState:barMetrics: :のドキュメントから

良い結果を得るには、backgroundImageはストレッチ可能な画像である必要があります。

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

IImage resizableImageWithCapInsets:

別の方法は、スケーリングする必要がないことを意味するサイズの多数の画像(各バーメトリックに1つ)を提供することです。 raywenderlich user-interface-customization 。ただし、画像をストレッチ可能にして、何が起こるかを制御できるようにする必要があります。

動作するストレッチ仕様が見つからない場合、フォールバックの位置は、各View Controllerのインスタンスごとにテンプレートの戻るボタンアイテムを作成し、それをナビゲーションアイテムのbackBarButtonItemとして設定することです。

5
Wain

IOS 7以降では、backIndicatorImageUINavigationBarプロパティを使用してカスタムインジケーター画像を設定する必要があります。また、backIndicatorTransitionMaskImageを指定する必要があります(両方に同じ画像を使用できます)。

スイフト

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

Objective-C

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

Swiftバージョン:-

    self.navigationController?.navigationBar.backIndicatorImage = UIImage(named: "HomeLeft@2x")
    self.navigationController?.navigationBar.backIndicatorTransitionMaskImage = UIImage(named: "HomeLeft@2x")
    self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: nil, action: nil)

これをviewDidLoad()に入れます

5

Swift 3

ViewDidLoadにこれを貼り付けます

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

次の関数を作成し、

func popSelf() {
    navigationController?.popViewController(animated: true)
    // do your stuff if you needed
}
0
Jerome