Swift Playground 支持 UIKit 吗?
Posted
技术标签:
【中文标题】Swift Playground 支持 UIKit 吗?【英文标题】:Does swift playground support UIKit? 【发布时间】:2014-06-03 07:39:08 【问题描述】:我试图在操场上创建一个UILabel
,但失败了。 Playground 目前是否只支持 OS X 开发?
【问题讨论】:
【参考方案1】:是的,确实如此!
文件:新建 > 文件... > ios > 源代码 > Playground
import UIKit
let lbl = UILabel(frame: CGRect(x: 0, y: 0, width: 300, height: 100))
lbl.text = "Hello ***!"
然后,保存文件。 (或者手动运行它。)这将触发 Playground 来解释 UI 相关的东西。此时,“UILabel”一词应出现在右侧。
现在,要实际查看您所做的工作,您必须点击右侧的“快速查看”眼睛,或在助理编辑器中打开白色圆圈:
这是 UIImage 工作等的一些基本内容的屏幕截图。
(编辑:对当前 CGRect 语法的小文本更新——但是,屏幕截图仍然显示旧语法。)
【讨论】:
MechEthan,我按照您的说明创建了 playgroud,只需键入您提供的代码,但是在我导入 UIKit 后,playgroud 甚至找不到 UILabel。我必须导入UIKit.UILabel,然后提示can't resolve CGRectMake ......然后我尝试创建一个项目并在项目中添加一个新的playgroud。 Xcode 在我打字时一次又一次地提示'Mach error 111 - unknown error code',我什至不能输入代码!我的 Xcode 版本 6.0 (6A215l)。 @6david9 很奇怪,我无法重现您的错误。我刚刚使用 Swift 作为语言创建了一个新的 iOS 项目,添加了一个新的 Playground 文件并输入了我的 UILabel 代码,没有错误/问题。我确实必须进行“构建”才能让“UILabel”出现在正确的托盘中。 Xcode 6.0 (6A215l) -- 试试重启吧??我很茫然! 一个 Playground 一次被分配到一个平台 - OS X 或 iOS。如果您无法导入 UIKit,您可能使用的是 OS X。有关如何更改平台的说明,请参阅@6david9 的答案。 很棒的答案,为掠夺者/格劳格 +1。【参考方案2】:Edited@2014-11-13:似乎新的 xcode 6 已修复此问题。
不,它没有。但值得注意的是,您可以导入 UIKit。
如果你想导入 UIKit,你可以这样做:
-
查看 -> 实用程序 -> 显示文件检查器(opt + cmd + 1)
在 Xcode 右侧将“Playground Settings -> Platform”从 OS X 更改为 iOS
然后你可以为 iOS 导入 UIKit 或一些模块
ps。我尝试创建一个 UIImageView 但它没有在右侧显示正确的图像。导入 UIKit 似乎一文不值
【讨论】:
David,虽然当事情不符合您的预期时提交错误总是值得的,但测试版的发行说明指定了一些使用高级工具(例如 OpenGL)进行渲染的 UIKit 元素本身,将无法在 iOS 操场上正确显示。 OSX 游乐场不应该遇到同样的问题。但是,无论如何,请提交一个错误。 误导性答案!是的,它确实有效。请参阅下面的帖子。 如果我或我的 Xcode 有任何磨损,我不会,当我尝试 stpe 1 时。(查看 -> 实用程序 -> 显示文件检查器(opt + cmd + 1)。我什么也没发生. :( 1.你用游乐场吗? 2. 如果是这样,请单击操场窗口的右上角按钮,选择文件检查器(或 opt + cmd+ 1)。 @iOS_Developer【参考方案3】:在 Xcode 7 中,现在您无法使用 Quick Look
来查看 UIView
的外观。
改为使用Assistant Editor
和:
XCPlaygroundPage.currentPage.liveView = sampleView
像这样:
import XCPlayground
import UIKit
XCPlaygroundPage.currentPage.needsIndefiniteExecution = true
// Simulate User Interaction, not available in Xcode 7.2
func delay(delay:Double, closure:()->())
dispatch_after(
dispatch_time(
DISPATCH_TIME_NOW,
Int64(delay * Double(NSEC_PER_SEC))
),
dispatch_get_main_queue(), closure)
let color = UIColor(red: 1, green: 1, blue: 0, alpha: 1)
let leftMargin = 20
let view = UIView(frame: CGRect(x: 0, y: 0, width: 375, height: 667)) // iPhone 6 proportions
view.backgroundColor = UIColor.grayColor()
// LABEL
let label = UILabel(frame: CGRect(x: leftMargin, y: 5, width: 300, height: 44))
label.text = "Hello, playground"
label.textColor = UIColor.whiteColor()
view.addSubview(label)
// TEXTFIELD
let textField = UITextField(frame: CGRect(x: leftMargin, y: 60, width: 300, height: 44))
textField.placeholder = "Edit me…"
textField.backgroundColor = UIColor(white: 1, alpha: 0.5)
textField.textColor = UIColor.whiteColor()
textField.userInteractionEnabled = true
view.addSubview(textField)
XCPlaygroundPage.currentPage.liveView = view
delay(1.0) () -> () in
textField.text = "New text!"
【讨论】:
【参考方案4】:在 Xcode 8 中,XCPlaygroundPage.currentPage.liveView
已弃用。相反,使用
import PlaygroundSupport
PlaygroundPage.current.liveView = view
【讨论】:
【参考方案5】:按 CMD+Option+1 并将平台更改为 iOS,这将允许您导入 UIKit。
【讨论】:
【参考方案6】:我发现我可以在 IOS 项目中添加一个新的 Playground 文件,并在该文件中导入 UIKit。
【讨论】:
【参考方案7】:请使用Command (⌘) + Option(⌥) + 1
组合从操场上的OSX切换到iOS平台使用UIKit。
【讨论】:
【参考方案8】:最简单的解决方案: Xcode 9.2
从一个新的 Single View Playground 开始:显示协助编辑器:查看 -> 协助编辑器 -> 显示协助编辑器。
给你。默认情况下,您将在实时视图窗口中看到打印属性:label.text = "Hello World!"
【讨论】:
【参考方案9】:按 Option+Cmd+1 并在平台设置中选择 iOS。然后就可以导入UIKit来玩啦~
【讨论】:
【参考方案10】:是的,它似乎还不支持 UIkit。
更新: 当我在 2014 年写这个答案时,它不支持 UIKit,现在它支持了。留作历史参考
编辑: 其实上面的答案是不正确的。
您可以创建 iOS 项目并在该项目中添加新的 .playground 文件。然后你可以导入 UIkit 或其他 iOS 特定的框架。
【讨论】:
@MJN,我会让用户自己决定答案。如果您不同意,请投票。以上是关于Swift Playground 支持 UIKit 吗?的主要内容,如果未能解决你的问题,请参考以下文章