我对二进制运算符有疑问,
是
scrollView.contentSize = CGSize(width: self.view.frame.width, height: self.view.frame.height+(self.view.frame* (1/10) *CGFloat(UIImage.count)))
有问题CGRect
和Int
。
我认为问题是1/10
,所以我将其替换为CGFloat(1/10)
:
scrollView.contentSize = CGSize(width: self.view.frame.width, height: self.view.frame.height+(self.view.frame* *CGFloat(UIImage.count)))
但是现在,我收到了新的消息类型CGRect
和CGFloat
如何摆脱这个错误?
答案 0 :(得分:0)
您不能将self.view.frame : CGRect
与CGFloat(1/10) : CGFloat
相乘。
您可能忘记了在该width
命令中选择height
或self.view.frame
。这样做之后,您将立即处理CGFloat
和CGFloat
,这将消除错误。
替换:
CGSize(width: self.view.frame.width, height: self.view.frame.height + (self.view.frame * CGFloat(1/10) * CGFloat(UIImage.count)))
具有:
CGSize(width: self.view.frame.width, height: self.view.frame.height + (self.view.frame.<#width or height#> * CGFloat(1/10) * CGFloat(UIImage.count)))
并指定要width
还是height
。
注释:
UIImage
没有名为count
的属性。
如@Rob所述,CGfloat(1/10)
是0.0
,因此括号运算符将始终产生0
,因为您要乘以0
。
答案 1 :(得分:0)
self.view.frame
是CGRect,而CGFloat(1/10)
是CGFloat,因此您不能在它们之间使用直接运算符*
。就像Rob在评论中所说的那样,CGFloat(1/10)是0.0,所以您应该使用0.1。
要修复此问题,请使用以下行:
scrollView.contentSize = CGSize(width: self.view.frame.width, height: self.view.frame.height+(self.view.frame.size.height * 0.1 * CGFloat(UIImage.count)))
希望这会有所帮助。
答案 2 :(得分:0)
您应该呆在1 / 10
上,避免强制转换。将其更改为CGFloat(1/10)
实际上会带来另一个问题,告诉编译器“嘿,尽管这是CGFloat
参数,但我确实希望您进行1
除以{{1} }(它为零!),然后将其强制转换为10
。”
因此,您可以坚持使用CGFloat
,因为该参数为1 / 10
,所以它将正确执行正确的浮点数学运算。真正的问题很简单,就是您将CGFloat
乘以view.frame
,而不是1 / 10
:
view.frame.height
我不知道该scrollView.contentSize = CGSize(width: view.frame.width,
height: view.frame.height + (view.frame.height * 1 / 10 * CGFloat(UIImage.count)))
引用的含义,因此我将其保留原样,但这显然是不正确的。
虽然上述方法非常有效,但是我们大多数人(来自其他语言)会明确将数字指定为浮点数,例如UIImage.count
或... * 1.0 / 10.0
或其他任何数字,以使其完全明确我们不希望它做任何整数数学:
... * 0.1
在此特定示例中,这完全等同于上面的内容,但是使用scrollView.contentSize = CGSize(width: view.frame.width,
height: view.frame.height + (view.frame.height / 10.0 * CGFloat(UIImage.count)))
而不是10.0
绝对清楚地表明我们要进行浮点数学运算。