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...