我是Swift的初学者。
我有这个错误
无法使用类型为"($T10,CGFloat)"的参数列表调用"+"
func loadBackground(key: NSString, width:CGFloat, height:CGFloat) -> UIImage!{
var imageName = key + "_" + width + "_" + height
return UIImage(named: imageName)!
}
错误表示您正在尝试连接字符串和浮点(或者不同类型,无法通过+
连接)。你可以插入&相反,构造这样的字符串:
func loadBackground(key: NSString, width:CGFloat, height:CGFloat) -> UIImage!{
var imageName = "(key)_(width)_(height)"
return UIImage(named: imageName)!
}
你可以在这里阅读更多关于
好吧,在@Grimxn的评论之后再多说几句。。。
首先,当调用该方法并从帧/边界获取值时,将width
和height
指定为CGFloat
s可能很方便,但它很可能会在将来咬到你(例如,想想像120.001
这样几乎"完美"宽度的帧,或者除法中得出的任何疯狂数)。因此,我相信Int
s在这种情况下会更好地服务,以便维护大小/文件名之间的映射(相对更安全)。
PS。此外,在您的情况下,let
可能比var
更可取,因为imageName
只是在没有进一步修改的情况下构造和返回的,最后UIImage?
作为返回类型将迫使您处理(或至少首先检查)任何找不到图像的情况,从而使您的代码更安全。