UIScrollView 平滑划動處理

2021-05-27 22:37:36 字數 2933 閱讀 8728

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

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

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

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

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

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

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

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

scrollview.autoresizingmask = uiviewautoresizingflexiblewidth;

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進行更新操作的**。

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];

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

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

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

#pragma mark -

#pragma mark uiscrollviewdelegate methods

- (void)scrollviewdidscroll:(uiscrollview *)sender

else

}

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

- (void)refreshpageviewafterpaged:(nsnumber *)prevpagenumber

else

}else if (currentpage + 1 == prevpage)

else

}[pool release];

}

UIScrollView 平滑划動處理

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

UIScrollView 平滑划動處理

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

UIScrollView實現重用

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