ScrollView 滚动视图
属性 contentSize 滑动区域 必须设置不然不会有效果
contentOffset 获取当前所在的ScrollView的位置 类型为CGPoint 得到对上和左的X和Y坐标
获取正在显示的真实的矩形区域 可以通过ScrollView的对象.aonverRect(scrollView.bounds,fromView:scrollview)
添加ScrollView 如果没有设置contentSize的话并不会显示
func scrollRectToVisible(CGRect,animated:Bool) 通过代码滑动ScrollView
重点 Zooming 放大缩小
首先要做的就是设置Zoom in的最大值和最小值
scrollView.minimumZoomScale = 0.3
scrollView.maximumZoomScale = 2.0
第二件就是delegate
func viewForZoomingInScrollView(sender:UIScrolView) -> UIView
var zoomScale : CGFloat //缩放比例
func setZoomScale(CGFloat,animated:Bool)
func zoomToRect(CGRect,animated:Bool)
闭包
[unowned self] in 防止指针重复在类中使用 无主self
weak self 这使得self为一个弱指针
class Foo{
var action: () -> Void = {}
func Show(value: Int) {println(“\(value)")}
func setupMyAction(){
var x:Int = 0
action = {
[unowned self] in
x += 1
self.Show(x)
}
}
func doMyAction10times(){for i in 1…10 {action()}}
}
Multithreading 多线程
在IOS里有多重队列
Main Queue 主队列是个串行队列,所有的UI活动都必须方法在主队列
Main Queue绝对不能做任何可能阻塞包含URL的NSData
let queue: dispatch_queue_t =要想做的队列 //队列
dispatch_async(queue){做想做的事情}
The Main queue
let mainQ:dispatch_queue_t = dispatch_get_main_queue //返回主队列
let mainQ: NSOperationQueue = NSOperationQueue.mainQueue() //面向对象的方法
dispatch_async(notTheMainQueue){
dispatch_async(dispatch_get_main_queue()){}
}
QOS_CLASS_USER_INTERACTIVE //快速并且优先级高
QOS_CLASS_USER_INITIATED //优先级高,但是需要时间
QOS_CLASS_UTILITY //上时间运行
QOS_CLASS_BACKGROUND //用户从不关心这个
let qos = Int(<上面任意一个>.value)
let queue = dispatch_get_global_queue(qos,0)
readers writers
let qos= Int(QOS_CLASS_USER_INITIATERD.value) //一个新的线程
dispatch_async(dispatch_get_global_queue(qos,0)){() -> Void in //采用闭包
dispatch_async(dispatch_get_main_queue()){} //返回main队列
})