gpt4 book ai didi

ios - 如何以编程方式在 iOS 中获取导航栏高度

转载 作者:搜寻专家 更新时间:2023-10-31 08:22:56 24 4
gpt4 key购买 nike

keyboardwillshown 时,我必须向上移动我的 View ,然后当键盘隐藏时,它回到正常位置

实际上我在 viewdidload 方法上使用了这段代码:

override func viewDidLoad() { 

NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name: UIKeyboardWillHideNotification, object: nil)

}

这是我用来上下移动的方法

func keyboardWillShow(notification:NSNotification){ 

print("keyboardwillshow")
let keyboardSize = (notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.CGRectValue()

self.view.frame = CGRectMake(0.0, -keyboardSize!.size.height + (self.navigationController?.navigationBar.frame.size.height)! + 20 , self.view.frame.size.width, self.view.frame.size.height )

}

func keyboardWillHide(notification:NSNotification){

self.view.frame = CGRectMake(0.0,(self.navigationController?.navigationBar.frame.size.height)!, self.view.frame.size.width, self.view.frame.size.height)
// self.view.frame.origin.y += 350

}

当我运行这个程序时,它会显示一个运行时错误

unexpected found a nil while unwrapping

请帮我解决这个问题。

最佳答案

对于 iPhone-X,顶部栏(导航栏 + 状态栏)的高度已更改(增加)。

如果你想要顶栏(导航栏+状态栏)的精确高度,试试这个:

objective-C

CGFloat topbarHeight = ([UIApplication sharedApplication].statusBarFrame.size.height +
(self.navigationController.navigationBar.frame.size.height ?: 0.0));

swift 4

let topBarHeight = UIApplication.shared.statusBarFrame.size.height +
(self.navigationController?.navigationBar.frame.height ?? 0.0)

为方便起见,试试这个 UIViewController 扩展

extension UIViewController {

/**
* Height of status bar + navigation bar (if navigation bar exist)
*/

var topbarHeight: CGFloat {
return UIApplication.shared.statusBarFrame.size.height +
(self.navigationController?.navigationBar.frame.height ?? 0.0)
}
}

swift 3

let topBarHeight = UIApplication.sharedApplication().statusBarFrame.size.height +
(self.navigationController?.navigationBar.frame.height ?? 0.0)

关于ios - 如何以编程方式在 iOS 中获取导航栏高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35624017/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com