只有一個ScrollView的時候
我們在使用App的時候诫给,經(jīng)常會看到這樣的效果描焰,當(dāng)我們點擊狀態(tài)欄的時候摊册,我們已經(jīng)滾動過的內(nèi)容,會自動的滾回頂部,例如:設(shè)置界面:
其實這個功能是系統(tǒng)默認(rèn)實現(xiàn)的鸳址,不需要自己寫代碼呀非。
當(dāng)點擊狀態(tài)欄的時候自動滾回頂部是因為UIScrollView的scrollsToTop的屬性為YSE
@property(nonatomic) BOOL scrollsToTop __TVOS_PROHIBITED; // default is YES.
居然系統(tǒng)已經(jīng)實現(xiàn)了這個功能唧瘾,那么為什么還要自己實現(xiàn)呢功戚?
這個是因為,系統(tǒng)實現(xiàn)的是有缺陷的勤晚。
當(dāng)ScrollView超過一個的時候
下面是蘋果對scrollsToTop屬性的解析說明
// When the user taps the status bar, the scroll view beneath the touch which is closest to the status bar will be scrolled to top, but only if its `scrollsToTop` property is YES, its delegate does not return NO from `shouldScrollViewScrollToTop`, and it is not already at the top.
// On iPhone, we execute this gesture only if there's one on-screen scroll view with `scrollsToTop` == YES. If more than one is found, none will be scrolled.
那就是當(dāng)前視圖下枉层,超過一個ScrollView的時候,即使你將scrollsToTop的值設(shè)置為YES赐写,但是在點擊狀態(tài)欄的時候鸟蜡,不會有一個ScrollView會滾動到頂部。
這個時候挺邀,如果我們需要這個功能揉忘,那么就要我們手動實現(xiàn)了。
針對這個端铛,我封裝了一個小框架“一行代碼完成“點擊狀態(tài)欄滾動視圖當(dāng)前內(nèi)容滾動到頂部”泣矛,框架集成了CocoaPods,方便使用,一行代碼可以實現(xiàn)這個小功能禾蚕。
使用LYTopWindow
第一步:使用CocoaPods導(dǎo)入LYTopWindow
在 Podfile
中進(jìn)行如下導(dǎo)入:
pod 'LYTopWindow'
然后使用 cocoaPods
進(jìn)行安裝:
如果尚未安裝 CocoaPods, 運行以下命令進(jìn)行安裝:
gem install cocoapods
安裝成功后就可以安裝依賴了:
建議使用如下方式:
# 禁止升級CocoaPods的spec倉庫您朽,否則會卡在 Analyzing dependencies ,非常慢
pod update --verbose --no-repo-update
如果提示找不到庫换淆,則可去掉 --no-repo-update
pod update
第二步:集成點擊狀態(tài)欄當(dāng)前內(nèi)容滾動到頂部
導(dǎo)入頭文件
#import <LYTopWindow.h>
在AppDelegate.m中方法application:didFinishLaunchingWithOptions:中添加以下代碼
[[LYTopWindow sharedTopWindow] setClickStatusBarBlock:^{
// 讓keyWindow上的ScrollView滾動到頂部
[[LYTopWindow sharedTopWindow] searchAllScrollViewsInView:[UIApplication sharedApplication].keyWindow];
// 如果需要實現(xiàn)點擊狀態(tài)欄哗总,實現(xiàn)其他功能,可用在這里編寫功能代碼
}];
注意:如果需要實現(xiàn)其他功能效果倍试,可以將這句代碼替換成其他需要的代碼
[LYTopWindow sharedTopWindow] searchAllScrollViewsInView:[UIApplication sharedApplication].keyWindow];
框架里面有個小Demo讯屈,可以自行實驗,歡迎Issues
LYTopWindow地址:https://github.com/DeveloperLY/LYTopWindow
如果想了解LYTopWindow的實現(xiàn)原理易猫,可以查看我的另一篇文章《點擊狀態(tài)欄耻煤,滾動視圖返回頂部的實現(xiàn)》