12. NSUserDefaults
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject("peter", forKey: "name")
if let name = defaults.objectForKey("name") as! String? {
println("name (name.uppercaseString)")
}
if let name = defaults.stringForKey("name") {
println("name (name.uppercaseString)")
}
defaults.setInteger(3, forKey: "age")
var age = defaults.integerForKey("age")
println("age (age)")
defaults.removeObjectForKey("age")
var ageObj = defaults.objectForKey("age")
println("age (ageObj)")
defaults.synchronize()
synchronize:寫⼊入disk,定期被呼叫,⾃自⼰己呼叫更保險
13. standford demo
var program:PropertyList {
get {
var returnValue = Array<String>()
for op in opStack {
returnValue.append(op.description)
}
return returnValue
}
}
Array<String>轉換成內容為NSString的NSArray
get {
return opStack.map{$0.description}
}
typealias PropertyList = AnyObject
15. standford demo
set {
if let opSymbols = newValue as? Array<String> {
var newOpStack = [Op]()
for opSymbol in opSymbols {
if let op = knownOps[opSymbol] {
newOpStack.append(op)
}
else if let operand =
NSNumberFormatter().numberFromString(opSymbol)?.doubleValue {
newOpStack.append(.Operand(operand))
}
}
opStack = newOpStack
}
}
26. 定義⻑⾧長⽅方形的元素
CGFloat
struct CGPoint {
var x: CGFloat
var y: CGFloat
init()
init(x: CGFloat, y: CGFloat)
}
struct CGSize {
var width: CGFloat
var height: CGFloat
init()
init(width: CGFloat, height: CGFloat)
}
float不能直接指派給CGFloat
var number1:Float = 5.1
var number2:CGFloat = 3.2
number2 = CGFloat(number1)
number1 = Float(number2)
27. 定義⻑⾧長⽅方形的元素
struct CGRect {
var origin: CGPoint
var size: CGSize
init()
init(origin: CGPoint, size: CGSize)
}
let rect = CGRect(x: 10, y: 10, width: 100, height: 100)
28. CGRect的property & method
var minX: CGFloat { get }
var midX: CGFloat { get }
var maxX: CGFloat { get }
var minY: CGFloat { get }
var midY: CGFloat { get }
var maxY: CGFloat { get }
func intersects(rect: CGRect) -> Bool
mutating func intersect(withRect: CGRect)
func contains(rect: CGRect) -> Bool
func contains(point: CGPoint) -> Bool
29. 座標系統
origin: 左上座標
x -> 愈向右愈⼤大
y -> 愈向下愈⼤大
單位points,不是pixel
retina : 2x, 2*2
retina HD: 3x, 3*3, iPhone 6 plus
40. 字型
let font = UIFont.preferredFontForTextStyle(UIFontTextStyleBody)
App內容
let font = UIFont.systemFontOfSize(20)
button等元件的⽂文字
let font = UIFont.boldSystemFontOfSize(20)
let font = UIFont(name: "Papyrus", size: 20)
46. Image
UIImageView & UIImage
Images.xcassets
let image: UIImage? = UIImage(named: “foo”)
optional
let image: UIImage? = UIImage(contentsOfFile: aString)
let image: UIImage? = UIImage(data: anNSData)
UIGraphicsBeginImageContext
程式繪製
ex: App畫⾯面截圖
47. Image
let image: UIImage = ...
image.drawAtPoint(aCGPoint) // the upper left corner of the
image put at aCGPoint
image.drawInRect(aCGRect) // scales the image to fit
aCGRect
image.drawAsPatternInRect(aCGRect) // tiles the image into
aCGRect