iOS游乐场不显示用户界面预览

我用XCode 7.1创build了一个简单的游戏场,我input了这个简单的代码:

import UIKit import XCPlayground var str = "Hello, playground" let color = UIColor (red: 1 , green: 1 , blue: 0 , alpha: 0 ) let view = UIView() view.backgroundColor = UIColo (colorLiteralRed: 1 , green: 0 , blue: 0 , alpha: 0 ) view.frame = CGRect (x: 0 ,y: 0 ,width: 100 ,height: 100 ) let label = UILabel (frame: CGRect (x: 5 , y: 5 , width: 50 , height: 20 )) label.text = str view.addSubview(label) 

游戏场运行时,不显示UIKit对象预览,但只显示debugging信息:

操场

我究竟做错了什么?

打开预览面板: 查看>助理编辑器>显示助理编辑器

然后在你的代码中:

 import PlaygroundSupport PlaygroundPage.current.liveView = view 

不要忘记给你的看法一个可见的框架。


Ps:在Xcode 9中,您可以使用默认视图创build一个游乐场

操场

接受的答案是一个屏幕截图,而不是内联代码,它显示了如何在Xcode 8之前这样做,所以我不认为这是一个好的答案。

这里是一个更新的答案对于Xcode 8:

有几个步骤:

您需要导入PlaygroundSupport

 import PlaygroundSupport 

您需要将PlaygroundPage.current.needsIndefiniteExecution设置为true:

 PlaygroundPage.current.needsIndefiniteExecution = true 

您需要将要显示的视图层次结构添加到liveView中:

 PlaygroundPage.current.liveView = container 

整个操场可能是这样的:

 import UIKit import PlaygroundSupport let container = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 200)) let view = UIView(frame: CGRect(x: 0, y: 0, width: 50, height: 50)) view.backgroundColor = UIColor.red container.addSubview(view) PlaygroundPage.current.liveView = container PlaygroundPage.current.needsIndefiniteExecution = true 

最后,您需要查看刚刚创build的实时视图。 在我的Xcode 8(发行版)的副本如果我尝试select视图菜单>助理编辑器>显示助手编辑器Xcode崩溃,每一次。

我必须将鼠标hover在代码右侧框中屏幕的右侧,在创build容器视图的行上。 我看到一个小小的眼睛图标,如果点击它,它会显示实时视图而不会崩溃。

对于那些遇到这个问题的人,助理编辑没有做任何事情(对我来说简直是空白),下面是我如何解决这个问题。

  1. 使用该代码来testing: https : //stackoverflow.com/a/33543820/4572536 (从上面接受的答案)

  2. View -> Assistent Editor -> Assistent Editors on Bottom (或任何其他选项)

后者将触发Xcode重绘视图。

注:我分享这是一个可能的解决方法,因为对我来说,即使完整的系统重新启动后,我的Xcode没有绘制视图。 我不知道如何重现这个问题,但是如果碰巧碰到它,你可以试试这个解决方法。

我不明白为什么你需要容器​​查看以前的答案需要。 这同样适用:

 import UIKit import XCPlayground import PlaygroundSupport var str = "Hello, playground" let color = UIColor (red: 1 , green: 1 , blue: 0 , alpha: 0 ) let view = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 200)) view.backgroundColor = UIColor.red view.frame = CGRect (x: 0 ,y: 0 ,width: 200 ,height: 200 ) PlaygroundPage.current.needsIndefiniteExecution = true PlaygroundPage.current.liveView = view let label = UILabel (frame: CGRect (x: 5 , y: 5 , width: 200 , height: 20 )) label.text = str view.addSubview(label) 

只需选中“Playground设置”下的“显示时间线”。

除了语法之外,我还发现了另外一个把实时视图显示回来的技巧(Xcode 8.2.1 Swift 3.0)。 这也可能是Xcode中的一个小错误。 只需点击助理编辑器顶部的+button。 因为有时你的助手编辑器正在显示你的文件的界面文件而拒绝自动显示实时页面。

在这里输入图像说明

在Xcode 8.3中,我仍然有问题。 唯一可行的是closuresXcode并重新启动它。 我试着退出模拟器,因为我发现它正在运行模拟器,但是这并没有解决这个问题。 将提交一个雷达。

 import UIKit import PlaygroundSupport let frame = CGRect(x: 0, y: 0, width: 300, height: 700) let container = UIView(frame: frame) container.backgroundColor = .red let inner = UIView(frame: CGRect(x: 100, y: 100, width: 20, height: 40)) inner.backgroundColor = .blue container.addSubview(inner) PlaygroundPage.current.liveView = container PlaygroundPage.current.needsIndefiniteExecution = true