当所有设备(iPhone 5 - 7 Plus)都可以看到键盘时,我正试图垂直居中标签。
目前,该标签仅垂直居中于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 Plus:
答案 0 :(得分:2)
将此行更改为
self.emptyStateMessageTopConstraint.constant = keyboardHeight - 145
此
self.emptyStateMessageTopConstraint.constant = (self.view.frame.size.height - keyboardHeight)/2 - yourlabelheight/2
答案 1 :(得分:1)
将标签的约束(中心y)添加到视图的中心,键盘上将显示更改视图的底部约束+ =键盘高度。在键盘显示的视图尺寸减小后,视图中心的标签将重新布局,以保持在中心位置。请注意,视图没有高度约束,只有顶部和底部约束。
OR 如果您在后台没有任何视图来更改底部约束,则可以更改标签的centerConstraint + = keyboardHeight。键盘秀要高一点。