无法调用+;使用Swift中CGRect error类型的参数
我想从无法调用+;使用Swift中CGRect error类型的参数,swift,xcode6,cgrect,cgrectmake,Swift,Xcode6,Cgrect,Cgrectmake,我想从CGRectMake函数启动UITableView的实例,但当我尝试使用常量而不是直接分配新的Int时,例如: UITableView(frame: CGRectMake(20, HEIGHT_OF_STATUS_AND_NAVIGATION_BAR + 120, tableWidth, tableHeight) ,然后我得到一个错误:Int不能转换为CGFloat 因此,我将其更改为以下代码: UITableView(frame: CGRectMake(20, (HEIGHT_OF_S
CGRectMake
函数启动UITableView
的实例,但当我尝试使用常量而不是直接分配新的Int
时,例如:
UITableView(frame: CGRectMake(20, HEIGHT_OF_STATUS_AND_NAVIGATION_BAR + 120, tableWidth, tableHeight)
,然后我得到一个错误:Int不能转换为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`.
,然后我得到一个错误:无法使用CGRect类型的参数调用+
当然,我可以通过分配Int
来启动它,比如CGRectMake(20+300+12,44+120300480)
。但我想用常量和变量
那么这个错误意味着什么呢?我怎样才能修好它
我使用的是Xcode 6 beta 6。您应该在常数的末尾加上“.0”,并在传递的任何值(如“120.0”)的末尾加上“.0”,从而使常数成为浮点值 大小应为CGFloat而不是Int
这应该是可行的。你应该在常数的末尾加上“.0”,在传递的任何值的末尾加上“.0”,比如“120.0”,从而使常数成为一个浮点数 大小应为CGFloat而不是Int
这应该行。一个
Int
不能用转换成CGFloat
。。。作为CGFloat
符号
您必须从Int
s中构造CGFloat
s:
let frame = CGRectMake(20.0, CGFloat(HEIGHT_OF_STATUS_AND_NAVIGATION_BAR + 120), CGFloat(tableWidth), CGFloat(tableHeight))
不能使用
将Int
转换为CGFloat
。。。作为CGFloat
符号
您必须从Int
s中构造CGFloat
s:
let frame = CGRectMake(20.0, CGFloat(HEIGHT_OF_STATUS_AND_NAVIGATION_BAR + 120), CGFloat(tableWidth), CGFloat(tableHeight))
@Martin R的方法确实很有效,但后来我发现没有理由费心使用
CGFloat()
——你可以使用CGRect()
而不是在Swift中使用CGRectMake()
,在Swift中,你可以将参数指定为Int
以及Double
或CGFloat
,用于所有x
,y
、width
和height
属性,只要这四个属性的类型相同。此外,在使用CGRectMake()
的情况下,不能省略每个属性的名称,但这更简单、更灵活,并且被认为是Swift中默认的CGRect
初始值设定项。使用@Martin R的方式效果很好,但后来我发现没有理由麻烦使用cfloat()
-您可以在Swift中使用CGRect()
而不是CGRectMake()
,在Swift中,您可以将参数指定为Int
,以及Double
或CGFloat
,用于所有x
,y
,宽度
,和height
属性,只要这四个属性的类型相同。此外,在使用CGRectMake()
的情况下,您不能省略每个属性的名称,但这更简单、更灵活,并且被认为是Swift中默认的CGRect
初始值设定项。谢谢。但是为什么Int
不能转换为CGFloat
?@Gardecolo:因为是用于向下转换的“类型转换操作符”,而不是用于不同类型之间的转换。谢谢。但是为什么Int
不能转换为CGFloat
?@Gardecolo:因为是用于向下转换的“类型转换操作符”,而不是用于不同类型之间的转换。它不能。上面写着“postfix是一个reservedIt不是。上面写着“.”后缀是保留的