Xcode 8游乐场实时视图不起作用

时间:2017-03-25 19:19:11

标签: ios swift xcode swift-playground

在我的Swift游乐场中,我输入以下代码来测试实时视图功能:

let view = UIView()

PlaygroundPage.current.liveView = view

但由于某些原因,实时视图不会显示在“助理编辑器”的右侧。最初我以为Xcode没有跑完游乐场。但我等待并等待它仍然没有表现出来。

截图: enter image description here

任何帮助?

6 个答案:

答案 0 :(得分:24)

我有同样的问题。我找到了一个临时解决方案。

我注意到如果我打开了多个Xcode项目,就会导致此错误。所以只需完全退出xcode(命令Q),只打开你正在尝试的实时游乐场,它应该可以工作。

确保您拥有以下导入,并且您可能希望为其提供框架和颜色,以确保它实际正常工作,因为您的视图没有框架或颜色。这段代码适合我。

import UIKit
import PlaygroundSupport

let view = UIView()
view.backgroundColor = .white
view.frame = CGRect(x: 0, y: 0, width: 100, height: 100)

PlaygroundPage.current.liveView = view

playground live view

答案 1 :(得分:12)

在Xcode 9.0中以及:

PlaygroundPage.current.needsIndefiniteExecution = true

您必须手动打开助理编辑器,然后当前焦点的游乐场将显示UIView。

答案 2 :(得分:7)

我也有同样的问题,以下代码行为我修复了它:

PlaygroundPage.current.needsIndefiniteExecution = true

设置实时视图应该为您自动启用它,但对我来说它并没有这样做。必须是Xcode中的错误。

答案 3 :(得分:1)

将UIView设置为实时视图仅对iPad游乐场有效,而对Xcode无效。

要使视图出现在Xcode 9和10游乐场中,我将其包装到一个视图控制器中,并将其设置为实时取景(就像默认的单视图游乐场一样):

import UIKit
import PlaygroundSupport

class MyViewController : UIViewController {
    override func loadView() {
        let view = UIView()
        view.backgroundColor = .white
        self.view = view
    }
}

PlaygroundPage.current.liveView = MyViewController()

答案 4 :(得分:1)

我是能够预览的ViewController认为仅明确地留下控制器在游乐场代码这样的观点:

import UIKit
import PlaygroundSupport

class MyViewController : UIViewController {
    // ...
}

let controller = MyViewController()
PlaygroundPage.current.liveView = controller
controller.view // <- to the far right of this line in editor you'll be able to expand and see result

答案 5 :(得分:0)

对于某些来这里的用户,您可能需要在XCode中打开实时取景

how to turn on live view