<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      安卓筆記俠

      專注安卓開發

      導航

      scrollView滾動原理

      首先要明確的是,scrollview 其實和普通的 view 并沒有多大的差別,只不過給它加上了一些手勢和約定。

      我們知道,要讓一個 scrollview 能夠滾動的方法是設置它的 contentSize 的寬或者高或者同時比自己的 frame 大。

      想一想為什么要這樣做?

      首先,scrollview 被蘋果開發出來是為了通過滾動來顯示比自己的 size 更多的內容,如果它的 contentSize 比自己都小,就沒有滾動的必要了。

      但實際上,scrollview 并沒有滾動,當你在“拖動” scrollview 時,你其實是在改變 scrollview 的 bounds.origin。

      那么什么是 bounds 呢? bounds 和 frame 又有什么關系呢?

      bounds 是一個 view 自身的坐標系,它的作用是規定它自身的內容從什么位置開始繪制。 frame 是一個 view 相對于自己父視圖的位置。它們是完全不相關聯的。

      你已經知道的是,當你“拖動” scrollview 時, scrollview 的代理會收到scrollViewDidScroll: 的消息,在里面打印 scrollview 的 contentOffset 的值,這個值會隨著你的“拖動”不停的變化。這時候,嘗試打印一下 scrollview 的 bounds.origin 的值,你會發現,這個值竟然和前面的值一樣。contentOffset 只是為了更好的說明情況給 bounds.origin 換了個名字而已。

      contentSize 只是抽象的概念,它規定的其實是 scrollview 的 bounds.origin 能夠變化的范圍。

      理解到這里,像其他的 scrollview 的特性,例如 bounces 等,都可以得到解釋。

      scrollview 還增加了一個特性,contentInset,它用來 scrollview 增加額外的滾動范圍,其實就是把 bounds.origin 的變化范圍擴大了。當你給 scrollview 設置 contentInset 的時候,你會發現,它的 contentSize 并沒有改變。

      一般情況下,你并不會通過直接設置 contentSize 來達到你“滾動”的目的,因為當你想讓 scrollview 的所有內容都能夠通過“滾動”的方式顯示時,你很難計算子視圖整體的大小, 因為子視圖在當時有可能還沒決定自己的大小。所以通常來說,你會用 scrollview 的子類,例如 tableview 和 textview。他們會根據自己內容的大小自動的設置 scrollview 的 contentSize,以便包裹所有內容。當然他們有自己不同的使用場景。

      同樣,當我們試圖實現類似的功能時,我們該怎么做呢?

      這里我們會用到 Auto layout。只要 scrollview 的子視圖確定了自己的大小,那么 scrollview 的 contentSize 就確定了,scrollable area 也就確定了。

      這里的最佳實踐是首先在 scrollview 上添加一個四周的 edge constraints 與 scrollview 間距為0的 content view,接下來,把你想要的子視圖添加上去并且設置好相應的約束就可以了。

      當我們實現上面的功能后,如果我們還想通過增加一些額外的滾動空間來實現例如防止鍵盤遮擋視圖、下拉刷新或者上拉加載的功能時,我們就可以通過簡單的設置 scroll view 的 contentInset 來實現,而不必從一開始就去關心 contentSize 的大小。

      問題思考:scrollView 的代理有 scrollViewDidScrollToTop: 的方法來通知 scrollView 滑動到了頂部,想一想它的原理是什么?如何知道 scrollView 滑動到底部了呢?如果還要加上考慮 contentOffset 和 contentInset 呢?

      posted on 2018-03-23 19:56  安卓筆記俠  閱讀(1370)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 成人网站免费观看永久视频下载| 日韩人妻无码一区二区三区综合部| 狠狠色综合久久狠狠色综合| 狠狠躁天天躁中文字幕无码| 亚洲码和欧洲码一二三四| 中文字幕久久熟女蜜桃| 久久综合给合久久狠狠狠88| 久久国产国内精品国语对白| 欧美特级午夜一区二区三区| 午夜福利精品国产二区| 精品国产中文字幕在线看| 岛国岛国免费v片在线观看| 亚洲熟女乱色一区二区三区| 亚洲性日韩精品一区二区三区| 国产成人亚洲一区二区三区| xxxxbbbb欧美残疾人| 国产毛片基地| 国产精品一二二区视在线| 亚洲午夜天堂| 亚洲欧美综合人成在线| 久久99热成人精品国产| 房产| 女人色熟女乱| 色伦专区97中文字幕| 午夜高清国产拍精品福利| 国产福利微视频一区二区| 国产成人亚洲综合图区| 久久国产精品色av免费看| 亚洲精品久久久久国色天香| 国产亚洲欧美精品久久久| 91中文字幕在线一区| 97免费人妻在线视频| 乱人伦人妻中文字幕在线| 亚洲精品色无码AV试看| 欧美最猛性xxxxx大叫| 激情综合网激情五月激情 | 加勒比亚洲天堂午夜中文| 国产成人午夜福利院| 石河子市| 在线a人片免费观看| 蜜桃视频在线免费观看一区二区 |