无法在Swift中使用CGRect类型的参数调用+

时间:2014-08-29 13:35:51

标签: swift xcode6 cgrect cgrectmake

我想从UITableView函数启动CGRectMake的实例,但是当我尝试使用常量启动它而不是直接指定新的Int时,例如:

UITableView(frame: CGRectMake(20, HEIGHT_OF_STATUS_AND_NAVIGATION_BAR + 120, tableWidth, tableHeight)

,然后我收到了一个错误:Int is not convertible to CGFloat

所以我把它改成了以下代码:

UITableView(frame: CGRectMake(20, (HEIGHT_OF_STATUS_AND_NAVIGATION_BAR + 120) as CGFloat, tableWidth as CGFloat, tableHeight as CGFloat)) // `tableWidth` and `tableHeight` are both of type `Int`.

,然后我收到了一个错误:Cannot invoke + with an argument of type CGRect

我当然可以通过分配Int来启动它,例如CGRectMake(20 + 300 + 12, 44 + 120, 300, 480)。但我想使用常量和变量。

那么错误意味着什么?我该如何解决?

我使用Xcode 6 beta 6。

3 个答案:

答案 0 :(得分:6)

@Martin R的运作方式很好,但后来我发现没有理由费心使用CGFloat() - 你可以在Swift中使用CGRect()代替CGRectMake(),您可以在其中为IntDoubleCGFloat和{xywidthheight以及CGRectMake()CGRect指定参数{1}}属性,只要所有四个属性属于同一类型。此外,在{{1}}的情况下,您无法省略每个属性的名称,但这更容易,更灵活,并被视为Swift中的默认{{1}}初始值设定项。

答案 1 :(得分:3)

使用Int表示法无法将CGFloat转换为... as CGFloat

您必须从CGFloat s:

构建Int s
let frame = CGRectMake(20.0, CGFloat(HEIGHT_OF_STATUS_AND_NAVIGATION_BAR + 120), CGFloat(tableWidth), CGFloat(tableHeight))

答案 2 :(得分:0)

你应该通过添加" .0"来使你的常量变为浮点数。在它的最后," .0"在你传递的任何价值的最后,如" 120.0"。

尺寸应该是CGFloat而不是Int。

这应该有效。