Skip to content

Instantly share code, notes, and snippets.

@romainmenke
Created April 3, 2016 17:58
Show Gist options
  • Save romainmenke/3d6a033425fb1aeeaa80cf0fadca707d to your computer and use it in GitHub Desktop.
Save romainmenke/3d6a033425fb1aeeaa80cf0fadca707d to your computer and use it in GitHub Desktop.
class FloaterContainerLayer:CALayer {
var maxFloaters = 9
var image:String?
var velocity:CGFloat = 50.0
var gravity : Gravity = "FloaterContainerLayer" // just so that the initialiser doesnt complain
}
class SomeViewController : UIViewController {
lazy var dotLayer : FloaterContainerLayer = {
let scrollLayer = FloaterContainerLayer()
scrollLayer.bounds = self.view.layer.bounds
scrollLayer.position = CGPoint(x: self.view.bounds.size.width/2, y: self.view.bounds.size.height/2)
scrollLayer.image = "dot"
scrollLayer.gravity = Gravity.dotGravity
return scrollLayer
}()
}
class Gravity : StringLiteralConvertible {
static var dotGravity : Gravity = "dotLayerGravity"
static var otherGravity : Gravity = "otherLayerGravity"
static var lastGravity : Gravity = "lastLayerGravity"
private var identifier : String = ""
private var inMemory : CGFloat?
var value: CGFloat {
get {
if let inMemory = inMemory {
return inMemory
} else {
let fetchedGravity = (NSUserDefaults.standardUserDefaults().objectForKey(identifier) as? NSNumber) ?? 10
inMemory = CGFloat(fetchedGravity)
return inMemory!
}
}
set(value) {
NSUserDefaults.standardUserDefaults().setValue(value, forKey: identifier)
// setting this to nil will make it fetch from permanenent storage.
inMemory = nil
}
}
typealias ExtendedGraphemeClusterLiteralType = StringLiteralType
typealias UnicodeScalarLiteralType = StringLiteralType
required init(stringLiteral value: String) {
self.identifier = value
}
required init(unicodeScalarLiteral value: UnicodeScalarLiteralType) {
self.identifier = "\(value)"
}
required init(extendedGraphemeClusterLiteral value: ExtendedGraphemeClusterLiteralType) {
self.identifier = value
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment