我试图在所有设备(iPhone 5 - 7 Plus)上都可见键盘时垂直居中放置一个标签。Swift:如何根据设备垂直居中视图/标签?
目前,标签只有垂直居中iPhone 5的屏幕上,但仅仅是因为我用下面的代码手动设置这就是:
func keyboardWillShow(_ notification:Notification) {
let userInfo:NSDictionary = (notification as NSNotification).userInfo! as NSDictionary
let keyboardFrame:NSValue = userInfo.value(forKey: UIKeyboardFrameEndUserInfoKey) as! NSValue
let keyboardRectangle = keyboardFrame.cgRectValue
let keyboardHeight = keyboardRectangle.height
UIView.animate(withDuration: 0.3) {
self.emptyStateMessageTopConstraint.constant = keyboardHeight - 145
self.updateViewConstraints()
self.emptyDataInfoView.layoutIfNeeded()
}
我的猜测是发现了UIView的大小当键盘可见并且基于设备时,调整自动布局约束。
我不知道这是否正确,但我正在认真努力地找出方法。
使用上述功能执行以下操作:
iPhone 5/SE:
iPhone 7加:
这工作完美!你能解释一下你是如何工作的? @Prakash – daanyyaal
你的屏幕高度 - 键盘高度/ 2会给你键盘上方屏幕区域的中点,然后减去标签的一半高度将会给你从你必须放置标签的位置确切的y位置。 –
啊,这很有道理! – daanyyaal