UINavigationBarの戻るボタンを次の画像に設定したいと思います。
標準の戻るボタンの画像に画像を埋め込みたくないので、この画像を表示したいだけです。
私が使用できる他の質問を見るとわかります:
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:barButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
戻るボタンの背景画像を設定します。しかし、これにより画像が引き伸ばされ、この特定の画像は、私が知る限り、引き伸ばすのに適していません。
戻るボタンの画像を自分の画像に置き換える方法はありますか?
IOS5.0以降をサポートしています。
IBarButtonItem setBackButtonBackgroundImage:forState:barMetrics: :のドキュメントから
良い結果を得るには、backgroundImageはストレッチ可能な画像である必要があります。
だから、それを伸縮性にします。つまり画像のどの部分を引き伸ばすことができるか、さらに重要なことに、どの部分を引き伸ばすことができないかを指定します。あなたの場合、これは画像の端(矢印を含まない部分)になります。
IImage resizableImageWithCapInsets:
別の方法は、スケーリングする必要がないことを意味するサイズの多数の画像(各バーメトリックに1つ)を提供することです。 raywenderlich user-interface-customization 。ただし、画像をストレッチ可能にして、何が起こるかを制御できるようにする必要があります。
動作するストレッチ仕様が見つからない場合、フォールバックの位置は、各View Controllerのインスタンスごとにテンプレートの戻るボタンアイテムを作成し、それをナビゲーションアイテムのbackBarButtonItem
として設定することです。
IOS 7以降では、backIndicatorImage
のUINavigationBar
プロパティを使用してカスタムインジケーター画像を設定する必要があります。また、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"]];
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()に入れます
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
}