我已经使用XCode 7.1创建了一个简单的游乐场,并且我输入了这个简单的代码:
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对象预览,而只显示调试信息:
我做错了什么?
答案 0 :(得分:149)
打开预览面板:查看>助理编辑>显示助理编辑器
然后在你的代码中:
import PlaygroundSupport
PlaygroundPage.current.liveView = view
别忘了给你的观点一个可见的框架。
Ps:在Xcode 9之后,您可以创建一个具有默认视图的游乐场
答案 1 :(得分:29)
接受的答案是屏幕截图,而不是内联代码,它显示了如何在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
最后,您需要查看刚刚创建的实时视图。在我的Xcode 8(发行版)副本上如果我尝试选择视图菜单>助理编辑器>每次都显示助手编辑器Xcode崩溃。
我必须将鼠标悬停在屏幕右侧的代码右侧框中,在我创建容器视图的行上。我看到一个小眼睛图标,如果我点击它,它会显示实时视图而不会崩溃。
答案 2 :(得分:11)
对于那些遇到助理编辑不做任何事情的问题的人(对我来说这只是空白),这就是我解决问题的方法。
使用该代码进行测试:https://stackoverflow.com/a/33543820/4572536(上面接受的回答)
View -> Assistent Editor -> Assistent Editors on Bottom
(或任何其他选项)
后者将触发Xcode重绘视图。
注意:我正在分享这个可能的解决方法,因为对我来说,即使在完全重新启动系统后,我的Xcode也没有绘制视图。我不知道如何重现这个问题,但是如果碰巧碰到它,你可以试试这个解决方法。
答案 3 :(得分:7)
除了语法之外,我还发现了另一个技巧,可以在我的情况下将实时视图恢复显示(Xcode 8.2.1 Swift 3.0)。这也许是Xcode中的一个小错误。 只需单击助理编辑器顶部的+按钮即可。因为有时您的助理编辑器会显示您文件的界面文件并拒绝自动显示实时页面。
答案 4 :(得分:3)
只需选中Playground Settings下的Show Timeline。
答案 5 :(得分:2)
我不明白为什么你需要上一个答案所需的容器视图。这也适用:
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)
答案 6 :(得分:1)
在Xcode 8.3中,我仍然遇到问题。唯一有效的方法是关闭Xcode并重新启动它。我尝试退出模拟器,因为我注意到它正在运行模拟器,但这并没有解决问题。将提出雷达。
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
答案 7 :(得分:1)
答案 8 :(得分:0)