Created
April 3, 2016 17:58
-
-
Save romainmenke/3d6a033425fb1aeeaa80cf0fadca707d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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