Xcode:无法使用“(CGFloat)”类型的参数列表调用“String”类型的初始化程序

Posted

技术标签:

【中文标题】Xcode:无法使用“(CGFloat)”类型的参数列表调用“String”类型的初始化程序【英文标题】:Xcode: Cannot invoke initializer for type 'String' with an argument list of type '(CGFloat)' 【发布时间】:2018-11-30 10:36:50 【问题描述】:

我正在使用以下代码,但收到错误消息“无法使用类型为“(CGFloat)”的参数列表调用类型“String”的初始化程序。我试图修改 String(height) 和 String(width) 都没有运气。任何想法将不胜感激!

let width = self.view.frame.size.width
let height = width/320 * 180

let videoEmbedString = "<html><head><style type=\"text/css\">body background-color: transparent;color: white;</style></head><body style=\"margin:0\"><iframe frameBorder=\"0\" height=\"" + String(height) + "\" width=\"" + String(width) + "\" src=\"http://www.youtube.com/embed/" + vid.videoId + "?showinfo=0&modestbranding=1&frameborder=0&rel=0\"></iframe></body></html>"

【问题讨论】:

【参考方案1】:

尝试"\(width)" 而不是String(width)

即将String(width)替换为"\(width)"

【讨论】:

请在您的答案中添加解释。【参考方案2】:

在 Swift 中,String 结构没有将 CGFloat 作为参数的初始化程序。然而,CGFloat(或者更确切地说是Double)有一个属性可以返回它的String 表示 - description

let width = self.view.frame.size.width
let widthString = width.description
let height = width/320 * 180
let heightString = height.description

【讨论】:

以上是关于Xcode:无法使用“(CGFloat)”类型的参数列表调用“String”类型的初始化程序的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 8 - UIToolbar 高度显示为 1000(CGFloat)

Xcode 11 的问题 - “INT 不能转换为 CGFloat?”

转换为 Swift3 错误

如何将 heightAncor 转换为 CGFloat 类型?

在带有 Xcode7 的 UITest 中使用“-[XCUIElement swipeDown]”时如何设置滑动距离

更改变量以查看实时更改Xcode Swift