UIScrollView 平滑划動處理

2021-06-06 21:04:27 字數 3152 閱讀 7578

ios開發經常會用到uiscrollview,而能夠平滑的展示划動效果,是至關重要的。比較常用的方法有兩種:

1)將所有的scrollview子頁面都add到scrollview中,這樣可以平滑滑動,但占用資源加多,並且初始化載入比較慢。

2)使用三個頁面view,在滑動過程中如指標輪詢那樣交替使用。優點是占用記憶體少,但如果單個頁面比較大,經常會在划動到中間位置的時候,出現卡頓,很影響使用者體驗性。

第一種方法就不多講解,如果頁面不多,並且每個頁面載入的資源也比較少,那麼建議採用第一種方式。如果頁面比較多,資源比較大,則建議採用延遲載入的方式。

更優的方法,請檢視:《優化——uiscrollview通過內容延遲載入以達到平滑滑動。

1、建立uiscrollview和三個自定義的view:

[cpp]view plain

copy

//***********************************uiscrollview***********************************/

scrollview = [[uiscrollview alloc] initwithframe:cgrectmake(0, 54, top_big_image_width, top_big_image_height)];  

scrollview.autoresizingmask = uiviewautoresizingflexiblewidth;  

"white-space:pre">    self.scrollview.contentsize = cgsizemake(numberofpages * self.scrollview.frame.size.width,   

self.scrollview.frame.size.height);  

self.scrollview.delegate = self;  

scrollview.autoresizessubviews = yes;  

scrollview.pagingenabled = yes;  

scrollview.showshorizontalscrollindicator = no;  

scrollview.scrollstotop = no;  

[selfview addsubview:scrollview];  

三個自定義view。函式setpagecontentwithpageview:(customview *)pageview withpagenumber:(nsinteger)pagenumber,是對customview進行更新操作的**。

[cpp]view plain

copy

prevpageview = [[customview alloc] initwithframe:cgrectmake(0, 0, self.scrollview.frame.size.width,  

self.scrollview.frame.size.height)];  

currentpageview = [[customview alloc] initwithframe:cgrectmake(0, 0, self.scrollview.frame.size.width,  

self.scrollview.frame.size.height)];  

nextpageview = [[customview alloc] initwithframe:cgrectmake(0, 0, self.scrollview.frame.size.width,  

self.scrollview.frame.size.height)];  

cgfloat pagewidth = self.scrollview.frame.size.width;  

cgfloat pageheight = self.scrollview.frame.size.height;  

currentpageview.frame = cgrectmake(currentpage * pagewidth, 0, pagewidth, pageheight);  

[self setpagecontentwithpageview:currentpageview withpagenumber:currentpage];  

//第一頁

if (currentpage == 0)  

}  //最後一頁

else

if (currentpage == numberofpages - 1)  

else

[self.scrollview addsubview:currentpageview];  

[self.scrollview addsubview:prevpageview];  

[self.scrollview addsubview:nextpageview];  

oint offset = cgpointmake(currentpage * self.scrollview.frame.size.width, 0);  

[self.scrollview setcontentoffset:offset animated:no];  

2、在- (void)scrollviewdidscroll:(uiscrollview *)sender方法中進行頁面更新。

[cpp]view plain

copy

#pragma mark -

#pragma mark uiscrollviewdelegate methods

- (void)scrollviewdidscroll:(uiscrollview *)sender  

else

}  函式refreshpageviewafterpaged是頁面的更新操作判斷。

[cpp]view plain

copy

- (void)refreshpageviewafterpaged:(nsnumber *)prevpagenumber  

else

}  else

if (currentpage + 1 == prevpage)  

else

}  [pool release];  

}  

UIScrollView 平滑划動處理

ios開發經常會用到uiscrollview,而能夠平滑的展示划動效果,是至關重要的。比較常用的方法有兩種 1 將所有的scrollview子頁面都add到scrollview中,這樣可以平滑滑動,但占用資源加多,並且初始化載入比較慢。2 使用三個頁面view,在滑動過程中如指標輪詢那樣交替使用。優...

UIScrollView 平滑划動處理

ios開發經常會用到uiscrollview,而能夠平滑的展示划動效果,是至關重要的。但,經常會在划動到中間位置的時候,出現卡頓,很影響使用者體驗性。因此,個人把個人的一些經驗整理下,用 說話,一目了然。1 建立uiscrollview和三個自定義的view scrollview uiscrollv...

UIScrollView實現重用

import inte ce test19viewcell uiview 索引 property nonatomic,assign nsuinteger index 文字 property nonatomic,copy nsstring text 文字控制項 property nonatomic,r...