I am instantiating a playground live view using the following code:
import UIKit
import PlaygroundSupport
let view = UIView()
view.frame = CGRect(x: 0, y: 0, width: 100, height: 100)
view.backgroundColor = .white
PlaygroundPage.current.liveView = view
The live view that appears is stuck to the top of the screen and I can't change it's location by changing the x and y values of the frame. How do I get the view to move/center on my screen?
Photo of how it comes out:
I have the following code inside Playgrounds in Xcode 8.* with Swift 3.2 and MacOS Sierra 10.12.*. Is there still a webview.allowsInlineMediaPlayback method in Swift 3.2 for Cocoa and WebKit because it doesn't come up with IntelliSense?
import Cocoa
import PlaygroundSupport
import XCTest
import WebKit
var myWebView:WebView! = WebView(frame: CGRect(x: 0, y: 0, width: 550, height: 300))
myWebView.mainFrame.loadHTMLString("<html><body><iframe src=\"https://www.facebook.com/plugins/video.php?href=https%3A%2F%2Fwww.facebook.com%2Ffacebook%2Fvideos%2F10153231379946729%2F&width=500&show_text=false&height=280&appId\" width=\"500\" height=\"280\" style=\"border:none;overflow:hidden\" scrolling=\"no\" frameborder=\"0\" allowTransparency=\"true\"></iframe></body></html>", baseURL: Bundle.main.bundleURL)
PlaygroundPage.current.liveView = myWebView
PlaygroundPage.current.needsIndefiniteExecution = true
I would like to get a canvas that I can use to draw on. The target would be an iOS based Swift playground. I searched the documentation and I could not found an object named Canvas, but if there is something similar to it then it would be good for me as well.
You can use something similar to this, note you don't have to use Sprite Kit classes.
import UIKit
import PlaygroundSupport
import SpriteKit
// Playground Container Setup
//
//
let containerWidth: CGFloat = 667.0
let containerHeight: CGFloat = 375.0
let containerCenter: CGPoint = CGPoint(x: (containerWidth/2), y: (containerHeight/2))
let containerView = SKView(frame: CGRect(x: 0.0, y: 0.0, width: containerWidth, height: containerHeight))
PlaygroundPage.current.liveView = containerView
let containterScene: SKScene = SKScene(size: CGSize(width: containerWidth, height: containerHeight))
containerView.presentScene(containterScene)
UPDATED
I've created a wrapper class to make this easier for everyone. Download the Playground here on github
I tried to create a UILabel in playground but failed. Does playground only support OS X development for now?
YES, it does!
File: New > File... > iOS > Source > Playground
import UIKit
let lbl = UILabel(frame: CGRect(x: 0, y: 0, width: 300, height: 100))
lbl.text = "Hello StackOverflow!"
Then, save the file. (Or manually run it.) This will trigger the Playground to interpret UI related things. At this point, the word "UILabel" should appear on the right-hand side.
Now, to actually view what you've done, you've got to click on the "Quick View" eye on the right, or the white circle to open it in Assistant Editor:
Here's a screenshot of some basic things with UIImage working, etc.
(EDIT: minor text update to current CGRect syntax -- But, screenshots still show old syntax.)
Edited#2014-11-13: It seems the new xcode 6 had fixed this.
NO, It doesn't. But it's worth noting that you can import UIKit.
If you want to import UIKit you cound follow this:
View -> Utilities -> Show File Inspector (opt + cmd + 1)
On the right side of Xcode Change “Playground Settings -> Platform” from OS X to iOS
then you could import UIKit or some module for iOS
ps. I try to create a UIImageView but it doesn't show the correct image on the right side. It seem worthless to import UIKit
In Xcode 7, now you can't use the Quick Look to see the appearance of a UIView.
Instead, use the Assistant Editor and:
XCPlaygroundPage.currentPage.liveView = sampleView
Like this:
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!"
}
In Xcode 8 XCPlaygroundPage.currentPage.liveView is deprecated. Instead, use
import PlaygroundSupport
PlaygroundPage.current.liveView = view
Press CMD+Option+1 and change the platform to iOS, this will allow you to import UIKit.
I found I could add a new playground file in IOS project, and in that file I can import UIKit.
please use Command (⌘) + Option(⌥) + 1 combination to switch to iOS platform from OSX in playground to use UIKit .
Most simple solution:
Xcode 9.2
Start with a new Single View playground:
show Assistance Editor: View -> Assistance Editor -> Show Assistance Editor.
here you go. By default you will see printed property: label.text = "Hello World!" in the Live View window
Press Option+Cmd+1 and choose iOS in the Platform setting. Then you can import UIKit and play~
Yeah looks like it doesn't support UIkit yet.
Update:
When i wrote this answer in 2014 it didn't support UIKit, now it does. Leaving this for historical reference
Edit:
Actually above answer is incorrect.
You can create iOS project and add new .playground file inside that project. Then you can import Uikit or another iOS specific framework.
I'm trying to use GLKit within the Xcode 6 OS X Swift Playground but the
import GLKit
doesn't seem enough to make Playground recognize GLKView. Any ideas?
import Cocoa
import GLKit
import OpenGL
let frame = CGRect(x: 0, y: 0, width: 400, height: 300)
class TriangleView: GLKView { // ERROR: Use of undeclared type 'GLKView'
override func drawRect(dirtyRect: NSRect) {
glClearColor(0.0, 0.0, 0.1, 1.0)
}
}
You can create iOS project and add new .playground file inside that project. Then you can import GLkit, I also had to import OpenGLES instead of OpenGL.
import UIKit
import GLKit
import OpenGLES
let frame = CGRect(x: 0, y: 0, width: 400, height: 300)
class TriangleView: GLKView { // ERROR: Use of undeclared type 'GLKView'
override func drawRect(dirtyRect: CGRect) {
glClearColor(0.0, 0.0, 0.1, 1.0)
}
}
There is no GLKView in OS X! From Apple documentation:
In OS X, NSOpenGLView class subsumes the GLKView and GLKViewController
classes in iOS.