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 吗?的主要内容,如果未能解决你的问题,请参考以下文章

将图像添加到 swift Playground [iPad]

swift_Set_集合的使用-06_UIKit框架

带有调试器支持的 Swift Playground?

如何检查 Playground 的 swift 版本?

如何制作多页 Swift Playground

如何使用 Swift 2 和 Xcode 7 读取 Playground 文本资源文件