1

我想启动一个UITableViewfromCGRectMake函数的实例,但是当我尝试使用常量而不是直接分配一个 new 来启动它时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。

4

3 回答 3

6

@Martin R 的方式效果很好,但后来我发现没有理由费心使用CGFloat()- 你可以在 Swift 中使用CGRect()而不是,在CGRectMake()Swift 中你可以指定参数Int以及所有Double, , ,和属性,只要所有四个属性都属于同一类型。此外,你不能省略每个属性的名称,你可以在 的情况下,但这更容易,更灵活,并且被认为是Swift 中的默认初始值设定项。CGFloatxywidthheightCGRectMake()CGRect

于 2014-09-29T23:09:11.830 回答
3

Int无法使用符号转换CGFloat为。... as CGFloat

您必须CGFloat从s 构造Ints:

let frame = CGRectMake(20.0, CGFloat(HEIGHT_OF_STATUS_AND_NAVIGATION_BAR + 120), CGFloat(tableWidth), CGFloat(tableHeight))
于 2014-08-29T14:04:46.290 回答
0

您应该通过在它的末尾添加“.0”来使常量成为浮点数,并在您传递的任何值的末尾添加“.0”,例如“120.0”。

大小应该是 CGFloat 而不是 Int。

那应该行得通。

于 2014-08-29T13:56:39.133 回答