TL;DR
非公開APIを呼び出すことで、UIToolbarの下記Itemが使えるようになります(通常は利用不可)。
- Safariの「進む」「戻る」「上」「下」ボタン
- 地図の「現在地」ボタン
UIToolbarの画像問題
アプリ内ブラウザを作るときに、頭を悩ませるのが、UIToolbarの「進む」「戻る」ボタン画像の調達・設定です。
ネットには使えそうな画像がたくさん転がっているものの、実際に当ててみると微妙にサイズが違ったり、線の太さが意図したものと違ったりで苦労します。
そこで、コードですべてをまかないたくなりますが、UIBarButtonItemでは、「進む」「戻る」などの基本的なものは、UIBarButtonSystemItemとして公開されていません(代わりになぜか「ゴミ箱」などが公開されています…)。
今回は、これらを使えるようにUIBarButtonItemをいじってみます。
UIBarButtonItemを拡張
extension UIBarButtonItem {
enum HiddenItem: Int {
case Arrow = 100
case Back = 101
case Forward = 102
case Up = 103
case Down = 104
}
convenience init(barButtonHiddenItem: HiddenItem, target: AnyObject?, action: Selector?) {
let systemItem = UIBarButtonSystemItem(rawValue: barButtonHiddenItem.rawValue)
self.init(barButtonSystemItem: systemItem!, target: target, action: action)
}
}
Toolbarに設定
let items =
[
UIBarButtonItem(barButtonHiddenItem: .Arrow, target: nil, action: nil),
UIBarButtonItem(barButtonHiddenItem: .Back, target: nil, action: nil),
UIBarButtonItem(barButtonHiddenItem: .Forward, target: nil, action: nil),
UIBarButtonItem(barButtonHiddenItem: .Up, target: nil, action: nil),
UIBarButtonItem(barButtonHiddenItem: .Down, target: nil, action: nil)
]
self.navigationController?.setToolbarHidden(false, animated: false)
self.setToolbarItems(items, animated: false)
標準ボタンの出現!

あとは、可変、固定スペースを入れて調整してあげればいいだけですね。