更新:デフォルトのナビゲーションバーを隠して終了し、ナビゲーションバーと同じように見えるUIViewを追加しました。これは良いとは思わないかもしれませんが、UINavigationBar
にパッチする代わりに、これは良いことです。SwiftのカスタムUINavigationBarクラスの高さを増やす方法
これは私が私のアプリでナビゲーションバーの高さを高めるために作成した私のカスタムUINavigationBar
クラスです。それは私にとってはうまくいかない。ここにはcodeがあります。
class PPBaseNavigationBar: UINavigationBar {
///The height you want your navigation bar to be of
static let navigationBarHeight: CGFloat = 83.0
///The difference between new height and default height
static let heightIncrease: CGFloat = navigationBarHeight - 44
override init(frame: CGRect) {
super.init(frame: frame)
initialize()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
initialize()
}
private func initialize() {
let shift = PPBaseNavigationBar.heightIncrease/2.0
///Transform all view to shift upward for [shift] point
self.transform = CGAffineTransform(translationX: 0, y: -shift)
}
override func layoutSubviews() {
super.layoutSubviews()
let shift = PPBaseNavigationBar.heightIncrease/2.0
///Move the background down for [shift] point
var classNamesToReposition: Array<String>?
if #available(iOS 10.0, *) {
classNamesToReposition = ["_UIBarBackground"]
} else {
classNamesToReposition = ["_UINavigationBarBackground"]
}
for view: UIView in self.subviews {
if (classNamesToReposition?.contains(NSStringFromClass(view.classForCoder)))! {
let bounds: CGRect = self.bounds
var frame: CGRect = view.frame
frame.origin.y = bounds.origin.y + shift - 20.0
frame.size.height = bounds.size.height + 20.0
view.frame = frame
}
}
}
override func sizeThatFits(_ size: CGSize) -> CGSize {
let amendedSize:CGSize = super.sizeThatFits(size)
let newSize:CGSize = CGSize.init(width: amendedSize.width, height: PPBaseNavigationBar.navigationBarHeight)
return newSize;
}
}
override func sizeThatFits(_ size: CGSize) -> CGSize {...}
以外のすべてのメソッドが呼び出されるのはなぜですか?
プログラムでナビゲーションバーを追加しようとしましたか? –
Navigation Controllerリファレンスを作成し、Navbarで新しいリファレンスを初期化します。 フレーム付きのinit navbarを使用できます。 –
こんにちはマラブです。私はUIStoryboardとプログラムで両方を試しましたが、助けにはなりませんでした。私はちょうどデフォルトのナビゲーションバーを置き換えることによって 'UIView'を追加しました。これは私のアプリケーションのための良い解決策です。 – Hemang