二进制运算符'+'不能应用于'CGRect'和'Double'类型

时间:2016-09-05 19:14:18

标签: ios swift swift3

当键盘出现在键盘高度时,我试图改变按钮的底部常数,增加8点。

但是以下

if let keyboardHeight = (n.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {

   saveButtonBottomConstant.constant = keyboardHeight + 8.0
}
转换为Swift 3时,

在Xcode 8.0 beta 6中给出了以下错误

  

二进制运算符'+'不能应用于'CGRect'和'Double'类型

我理解为什么会发生这种情况,但是我的尝试导致的错误多于解决问题。

如何在Swift 3中简单地将Double添加到CGRect值?

3 个答案:

答案 0 :(得分:3)

UIKeyboardFrameBeginUserInfoKey以屏幕坐标返回键盘的框架,因此keyboardHeightCGRect类型。

您可以按如下方式获得键盘的高度:

if let keyboardFrame = (n.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
  saveButtonBottomConstant.constant = keyboardFrame.height + 8.0
}

答案 1 :(得分:2)

您的代码无法正常运行,因为您尝试将Double(8.0)添加到CGRectkeyboardHeight)。当您使用Swift 3时CGRectGetHeight()不可用,因此您应该使用它:

saveButtonBottomConstant.constant = keyboardHeight.height + 8.0

答案 2 :(得分:0)

您应该有2个Double值或2个GCRect值。将其中一个更改为另一个,然后重试。