我想从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。
答案 0 :(得分:6)
@Martin R的运作方式很好,但后来我发现没有理由费心使用CGFloat()
- 你可以在Swift中使用CGRect()
代替CGRectMake()
,您可以在其中为Int
,Double
,CGFloat
和{x
,y
,width
和height
以及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。
这应该有效。