ios UIScrollView 勻速滾動

實際效果
Untitled.gif
需求描述

tableView顯示的列表中需要自動滾動內(nèi)容,于是使用如下方法使tableView滾動.

[self.tableView setContentOffset:CGPointMake(0, 100)animated:YES];

然而滾動的效果并不理想,因為滾動的時間,以及加速,減速等一系列的參數(shù)都無法設(shè)置,最后出來的效果就是瞬間滾動到了指定位置,而且是先加速后減速的效果.

解決思路

scrollView的滾動效果是一個動畫,那么動畫肯定會有一個執(zhí)行時間和一個Timing參數(shù),所以只要能修改到這兩個參數(shù)就可以達(dá)到想要的效果.

Timing有四種模式,這個也是可以自己寫出來的

CA_EXTERN NSString * const kCAMediaTimingFunctionLinear//勻速
CA_EXTERN NSString * const kCAMediaTimingFunctionEaseIn//加速
CA_EXTERN NSString * const kCAMediaTimingFunctionEaseOut//減速
CA_EXTERN NSString * const kCAMediaTimingFunctionEaseInEaseOut//先加速,后減速

當(dāng)滑動的時候?qū)赢嬙O(shè)置為kCAMediaTimingFunctionLinear即可實現(xiàn)勻速的滑動.不過這個參數(shù)系統(tǒng)是不對外開放的,可以通過runTime機(jī)制獲取.

github上找到一個寫好的category可以直接使用:
https://github.com/jlott1/UIScrollView-ScrollAnimation
使用例子:

CAMediaTimingFunction * timing=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
[self.tableView setContentOffset:CGPointMake(0, self.tableView.contentOffset.y+44) withTimingFunction:timing duration:1];

Demo地址:
https://github.com/StoneMover/alldemo/tree/master/scrollTest

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容