uiscrollview的經典例子就是safari的編輯模式了
uiscrollview可以垂直,水平滾動。
如果屬性pageenabled = yes,則設定其為分頁模式,那麼沒滾動一次就是一頁,垂直方向上的一頁就是uiscrollview的高度,水平方向就是其寬度。
我們可以設定contentsize,這就是uiscrollview可以滾動的最大區域了。
uiscrollview沒有datasource的概念,因為這就是乙個view,具體view中的內容擺放完全隨意,只是每次都會滾動固定的頁面大小。
比如我們有5個頁面,我們需要自己計算每個頁面的位置,將其水平放在uiscrollview上。
contentsize則設定為5*每個頁面的寬度,每個頁面的高度。
如果contentsize的高度或這寬度正好與uiscrollview的高度或寬度相等,則在該方向上不能滾動。
具體例子可以檢視官方文件的例子,pagecontrol。
注意:uiscrollview不會帶有分頁的指示符號,需要利用uipagecontrol控制。
但是要想做到safari的效果,我們需要乙個小技巧,因為在safari中,當前頁時可以看到前後兩頁的部分內容。
注意:分頁的寬度不能修改,所以我們只能縮小uiscrollview的寬度,讓其不要佔滿整個螢幕,同時設定clipstobouds屬性為no,這 樣超出範圍的檢視也會顯示,這樣就能看到前後兩頁的內容,當然需要設定前後兩頁的alpha值為0.5,做出乙個透明效果。
在uiscrollview的滾動事件中,判斷位置,當乙個頁面出現的區域超過1半時,設定alpha為1,小於1半時設定alpha為0.5
現在還有乙個問題:uiscrollview的滑動事件響應區域變小了,因為uiscrollview本身變小了,其餘我們看到的頁面在區域之外,因此 我們需要重寫uiscrollview所在的parentview的hittest事件,在其他區域的事件返回值為uiscrollview物件,這樣用 戶感覺整個螢幕都是uiscrollview在響應了。
補充說明:
當時我在做這個東西的時候搜到的寫的最詳細的文章就是這個了,不過對於最後的hittest事件一直是知其然而不知其所以然。現在分享一下我關於hittest的一些認識。
當uiscrollview的滑動事件響應區域變小的時候,右側就會留下一塊不響應scrollview事件的矩形區域,因此,可以在自定義的scrollview類裡重寫hittest函式。**如下:
- (uiview *)hittest:(cgpoint)point withevent:(uievent *)event
return [super hittest:point withevent:event];
}
UIScrollView分頁的實現
uiscrollview的經典例子就是safari的編輯模式了 uiscrollview可以垂直,水平滾動。如果屬性pageenabled yes,則設定其為分頁模式,那麼沒滾動一次就是一頁,垂直方向上的一頁就是uiscrollview的高度,水平方向就是其寬度。我們可以設定contentsize,...
UIScrollView分頁的實現
uiscrollview的經典例子就是safari的編輯模式了 uiscrollview可以垂直,水平滾動。如果屬性pageenabled yes,則設定其為分頁模式,那麼沒滾動一次就是一頁,垂直方向上的一頁就是uiscrollview的高度,水平方向就是其寬度。我們可以設定contentsize,...
UIScrollView與分頁的聯合使用
1 滑動檢視的建立,和分頁連用 1 建立滑動檢視 2 在滑動檢視裡面新增 3 建立分頁檢視 4 給滑動檢視設定 5 實現 方法,使翻頁的時候,分頁也在自己的相應的點上 協議方法的實現 當滾動時觸發的方法 2 與分頁連用,並且可以無限滾動 1 在第一張頁面前面加一張與最後一張一樣的 2 實現兩個協議,...