Monkeying Around With SpriteKit—Embedding UIViews in SKViews

import UIKit
import SpriteKit
import GameplayKit

class myFirstScene: SKScene {
    var vWidth:CGFloat {
        return (self.view?.frame.size.width)!
    var vHeight:CGFloat {
        return (self.view?.frame.size.height)!
    override func didMove(to skView: SKView) {
        let uiVIew: UIView = UIView(frame: CGRect(x: 0, y: vHeight * 0.25, width: (vWidth * 0.5), height: (vHeight * 0.5)))
        uiVIew.backgroundColor =

        let txtView = UITextView(frame: uiVIew.bounds)
        txtView.text = "I am a UITextView \nIn a UI View\nIn a SKView \nIn an SKScene\nDrien by a UIViewController."
        txtView.textColor = UIColor.white
        txtView.textAlignment = .left
        txtView.isEditable = false
        txtView.backgroundColor = UIColor.clear

class GameViewController: UIViewController {

    override func viewDidLoad() {
        let skView = self.view as! SKView
        let mainViewFrame:CGRect = self.view.bounds
        let skScene = myFirstScene(size: mainViewFrame.size)

Bookmark and Share

Swift 3.0 Card Generator: Update

Early November 2016, I pushed up a small pet project to GitHub:

The application is simple: enter a few bits of information, choose a color, and set a background image and it formats a trading card. The dpi generated is not yet tweaked to work with the chosen distribution method (final TODO) but a few branches exist with slight variations on configuration.

here are some examples using background images from my static art portfolio:

Bookmark and Share

Seattle Snow

Bookmark and Share

Swift: Clock Layout Update*

While yesterday’s code solved the ‘problem’, today I took a few minutes to do some abstraction and write an alternate version that computes the positions of n points evenly spaced in a circle:

//Constant size of each node on the clock face
let kSize:CGFloat = 4

//Place a ClockFace node in the center
let clockFace:SKShapeNode = nodeGenerator(size:r, point: CGPoint( x:midPoint.x, y:midPoint.y), scene:scene)
clockFace.fillColor = SKColor.gray

//Place a normal node in the center
let centerNode:SKShapeNode = nodeGenerator(size:kSize, point: CGPoint( x:midPoint.x, y:midPoint.y), scene:scene)

//Determine radian spacing...
let nodesOnTheClock = 12
let interval:Double = 2 * M_PI / Double(nodesOnTheClock) //Radians

for index in 1...nodesOnTheClock {
    let angle:Double = M_PI_2 - Double(index) * interval
    let node:SKShapeNode = nodeGenerator(size: kSize,
                                           point: CGPoint(
                                            x:midPoint.x + r * cos(CGFloat(angle)),
                                            y:midPoint.y + r * sin(CGFloat(angle))),


You can grab the Gist at:

The Full Code Snippet will be below the following screenshots:

Continue reading

Bookmark and Share

Clock Points — Swift Playground

Another Quick Exercise

For my birthday, I decided to solve a display exercise in Swift that inevitably will be necessary in my personal Towne of Klock project. The problem is very simple:

Given a 2D cartesian plane (in this case a SpriteKit Scene in Swift) determine where the points for One O’Clock through Twelve O’Clock must be placed. Not a very original or difficult problem to solve, per say. However, I do so love playing with geometry!

If interested in my solution you can do one of the following…


Continue reading

Bookmark and Share

iOS GameKit (Swift) Controller

A Leisurely Evening Exercise

Tonight I decided to Explore SpriteKit. I decided a quick project would be to create a simple touch controller (using a gamepad control stick as a metaphor). I drew most of the inspiration for this project from the iOS Chrono Trigger port which I always enjoyed.

Continue reading

Bookmark and Share

Inspecting Headers with Objective-C

Occasionally, an iOS app may to need to parse the headers out of an HTTP request. Here is one example to implement such behavior.

First consider the NSHTTPURLResponse Object:

<NSHTTPURLResponse: 0x79f4b7e0> 
    status code: 200, 
    headers {
      "Accept-Ranges" = bytes;
      Age = 157;
      Connection = "Keep-Alive";
      "Content-Encoding" = gzip;
      "Content-Length" = 94;
      "Content-Type" = "text/html";
      Date = "Mon, 06 Jun 2016 21:20:29 GMT";
      "Last-Modified" = "Mon, 06 Jun 2016 18:36:03 GMT";
      Server = "nginx/1.10.1";
      Vary = "Accept-Encoding";

For this example, I am interested in the “Last Modified” header field on my sample index.html file. My application wants to know how long it’s been since that url was last updated.

Continue reading

Bookmark and Share