1.在scroView上拖一個imageView 設置其大小,而後設置contentSize的大小,只能用代碼設置。在設置contentOffSet屬性(contentOffSet的屬性特色,是一個point設置成正值向上移動)。contentInSet = UIEdgeInSetMake(a, b, c, d);他的值是scrollView的邊距進行增長算法
項目一:喜馬拉雅分析oop
1.分析頁面結構spa
2.要在stroryBoard上拖控件代理
(1)分次序,添加九宮格的算法orm
(2)設置contentSize 經過獲取最大的Y只獲取size的Y值,若是是一些常量,儘可能使用宏定義,方便修改對象
(3)注意autoLayOut事件
(4)添加按鈕,控制屬性變化並記錄當前位置,修改contentOffSet屬性 圖片
3.使用代理步驟it
1>聲明協議io
2>設置代理
3>實現協議中的方法
scrollView操做是調用的方法,實現協議中的方法
用戶開始拖拽時某個scrollView時調用()
縮放使用,監聽手勢的捏合,viewForZoomingInsscrollView方法
(1)設置縮放內容
(2)設置縮放範圍
設置scrollView的maxmumZoomScale = .5 (設置放大的範圍)
在模擬器上按住option鍵進行縮放
4.圖片輪播
1.UI
1>scrollView :分析UI如何實現,用代碼建立,
2>圖片 :經過FOR循環建立5個imageView,這個每一個imageView的x值,及其frame添加到scrollView中
3>UIPageControll (在storyBoard中添加pageControl控件,注意不要添加到scrollView裏面,不要直接拖,要經過修改Y值來放到scrollView上面)
2.業務邏輯
1>拖動:設置scrollView的分頁屬性 pagingEnable = yes;
2>設置頁碼 :在代理中設置頁碼,獲取scrollView的contentOffset屬性,計算出對應的頁碼,將頁碼賦值給pageControl的currentPage屬性。計算的算法爲:(當前的offset.x + 屏幕寬度的一半)/ 屏幕的寬度;
3>自動滾動:添加定時器,兩種方法。首先聲明NSTimer對象,一種經過timerWithTimeInterval設置,另外一種是經過scheduleTimeWithTimeInterval。而後將定時器添加到主時鐘上。兩種方式的區別:1. scheduleTimeWithTimeInterval只能同時響應一個事件,要麼是定時器事件,要麼是用戶操做如拖拽事件。若是同時發生,優先執行用戶事件。而timerWithTimeInterval須要將定時器手動添加到主循環中,模式有兩種,一種是NSRunLoopDefaultmode,另外一種是NSRunLoopComonModes。這種模式能夠同時響應兩種事件。
經過代理的方式,當拖拽時使用scrollViewWillBeginDragging方法,去掉定時器。方法是調用NSTimer中的invalidate方法中止定時器,而且使timer = nil;
中止拖拽時調用scrollViewDidEndDragging方法,添加定時器,調用添加方法便可。