1. 程式人生 > >UIScrollView使用自動佈局不能滑動的解決方法

UIScrollView使用自動佈局不能滑動的解決方法

       對UIScrollView使用Auto Layout,scrollView不能滑動的根本原因是該 scollView 的 contentSize 計算錯誤。

       在使用Auto Layout時,UIScrollView會根據子檢視的大小和約束來動態計算contentSize。我們需要做的就是告訴系統怎麼去計算。

       博主採用Masonry進行自動佈局,程式碼如下:

    //......scrollView的各個 子view 

    //scrollView位於底部的 子view
    [bottomView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(tips.mas_bottom).offset(20);
        make.centerX.equalTo(bottomView.superview.mas_centerX);
        make.width.equalTo(bottomView.superview.mas_width).offset(-20);
        make.height.equalTo(@(bottomHeight));
    }];

        這個時候scrollView就不能滑動,因為系統雖然知道了各個子view的大小和相互之間的約束,但卻不知道子view與scrollView之間的約束。也就是說,沒法通過子view去計算scrollView的contentSize。修正的方法是加一行程式碼

        make.bottom.equalTo(bottomView.superview.mas_bottom).offset(-30);

       把底部的子view的bottom和scrollView的bottom關聯起來,這樣就能確定scrollView的contentSize的height,從而確定scrollView的垂直滑動距離。

       修改後程式碼如下:

    //......scrollView的各個 子view 

    //scrollView位於底部的 子view
    [bottomView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(tips.mas_bottom).offset(20);
        make.centerX.equalTo(bottomView.superview.mas_centerX);
        make.width.equalTo(bottomView.superview.mas_width).offset(-20);
        make.height.equalTo(@(bottomHeight));
        make.bottom.equalTo(bottomView.superview.mas_bottom).offset(-30);
    }];

       總而言之,將最右的子view的 trailing 與scrollView的 trailing 相關聯,可以確定scrollView的contentSize的width;將最底部的子view的 bottom 和scrollView的 bottom 相關聯,可以確定scrollView的contentSize的 height。如果確定不了,則預設取0。

相關推薦

Kubernetes新建RC成功時但Pods沒有自動生成的解決方法

建立好yaml檔案以後,為了將它釋出到kubernetes叢集中,在Master節點執行以下命令時,顯示我們想要建立的RC已經建立成功 #kubectl create -f filename.yam replicationcontroller "rcname" created 但

ScrollView動態設定Margin後不能滑動解決方法

ScrollView的父佈局是ViewGroup,所有需要用ViewGroup來設定param,正確方式如下: 若設定margin後內容顯示不全,說明你設定的margin低於了你覆蓋文字的控制元件的高度 ViewGroup.MarginLayoutParams params= (View

手機端虛擬鍵盤彈出使介面佈局混亂解決方法

html5頁面當點選input輸入框彈出安卓手機上鍵盤就會把背景頂了上來,軟鍵盤彈出時,改變了height,使height:100%,不能達到原來的高度。 頁面佈局就亂了,解決方法: 原生js: window.onload=function(e){ var _b

TextView英文自動換行解決方法

TextView元件 遇到一個問題: 想將【TP-LINK_XXXXXXX】已ellipsize="end'的方式展示一部分,設定 android:layout_width="400px" android:ellipsize="end" android:maxLines=

Latex 參考文獻、方程 自動編號,自動引用! 解決方法

1、參考文獻 自動編號自動引用方法有好幾個,目前只使用一個,感覺也挺簡單        在  \section*{References} 裡面使用 \begin{thebibliography} \

C# WinForm 中Label自動換行 解決方法

在TableLayoutPannel中放著一些Label 如果把Label的AutoSize屬性設成True的話,文字超過label長度時就會自動增加,直到後面的字出窗體以外 設定成False時,一旦到達Label的長度,後面的字元也就顯示不出來了 經過我的多番實踐,最

Centos6.5 eth0網絡卡無法自動啟動的解決方法

查詢ip地址,發現沒有網絡卡eth0 檢查ifcfg-eth0檔案,ONBOOT="yes",設定的是網絡卡自啟動的方式 懷疑是NetworkManager服務和network衝突 關閉NetworkManager服務及自啟動 重啟下network服務,再

IE 下使用window.open() 開啟同一頁面,第二次的時候不自動跳轉解決方法

解決方法 定義一個全域性變數記錄window.open()開啟的窗體 如過該變數被記錄過,則先關閉該視窗,然後再次開啟新視窗即可 eg: /*記錄當前開啟的窗體/ var showDocContentWindow; function showCivilD

Ubuntu使用過程中滑鼠自動停止的解決方法

1. 安裝laptop-mode-tools sudo apt install laptop-mode-tools 2. 編輯runtime-pm.conf sudo vim /etc/laptop-mode/conf.d/runtime-pm.conf 3. 修改以

【翻譯自mos文章】job 不能自動執行的解決方法

job 不能自動執行的解決方法 參考原文: Jobs do not execute automatically (Doc ID 309945.1) 適用於: Oracle Server - Enterprise Edition - Version: 9.2.0.4 This

ORACLE使用者自動被鎖解決方法

  --1.   --系統引數配置  connect sys/[email protected]_link as sysdba   select * from dba_profiles where resource_name like 'FAILED_LOGIN

windows2003遠端桌面退出後系統自動登出的解決方法

最近公司有一個奇怪的需求,意思是有一個網頁,要時時的開啟著。現在只有把這個網頁在伺服器上開啟。 這樣才能滿足需求。但我在應用中遇見了個問題。我在伺服器上開啟網頁後,關掉遠端,過一會網頁的執行效果就沒有了。 我再用帳戶遠端登入,發現是一個全新的桌面。執行的程式都不見了。 我心想應該是沒有接上之前的會話狀態,但

Edittext不自動獲取焦點解決方法以及獲取焦點後的事件實現方法

解決之道:在EditText的父級控制元件中找一個,設定成                         android:focusable="true"                      

Retrofit(OKHttp)多BaseUrl情況下url實時自動替換完美解決方法

前言 多數專案中會出現用到多個BaseUrl的情況,而Retrofit未提供實時切換BaseUrl的方法,且我們在使用Retrofit以及OkHttp時,通常使用單例模式建立Retrofit和OkHttpClient,也不可能每個請求都建立一個Retrofit例項。

sql server 2000總是自動停止的解決方法

不知何時開始,我的sql server 2000總是自動停止,十分煩惱,排除了病毒等多方面的原因,在網上搜索了下,發現是MDAC2.8惹的禍,只需要重新安裝一下就可以了。下載了MDAC2.8,安裝了,又提示說版本不相容。於是,又去搜索了相關的資料,轉載一下下面的解決方法

div裡ul li浮動之後父容器高度不能自動增加的解決方法

之前在Github上fork了一個題目,按照流程圖來製作一個電商網站…但是遇到點問題 如果一個Div內的Ul,li元素浮動的話,這個DIV的高度是沒辦法被正常的撐起來(顯示高度為0) 下圖一共4個div,我給每個div設定了1px灰色的border-bottom。但是一預覽

IIS6.0 IIS7.5應用程式池自動停止的解決方法

關於IIS6的(適於IIS7)解決方法 描述: iis6應用程式池被自動禁用問題 Service Unavailable 應用程式池 'DefaultAppPool' 被自動禁用,原因是為此應用程式池提供服務的程序中出現一系列錯誤。應用程式-特定 許可權設定未將 COM 伺服器應用程式(CLSID 為

對於Weblogic 伺服器啟動後,出現記憶體溢位錯誤,自動關閉的解決方法.

Weblogic 伺服器啟動後,出現記憶體溢位錯誤,自動關閉的解決方法: 當在啟動weblogic伺服器後,它會自動報OutOfMemoryError異常,過一會兒就自動關閉了. 出現這種情況是Java VM的記憶體分配不夠導致的. 在運動weblogic伺服器的指令碼檔案s

UIScrollView使用自動佈局不能滑動解決方法

       對UIScrollView使用Auto Layout,scrollView不能滑動的根本原因是該 scollView 的 contentSize 計算錯誤。        在使用Auto Layout時,UIScrollView會根據子檢視的大小和約束來動態計

關於含RecyclerView的fragment來回切換時頁面自動滑動到底部的解決方法

get 切換 屬性 odi encoding 1.0 linear UC div 原因: 在fragment中來回切換時RecyclerView獲得了焦點,而RecyclerView的 focusableOnTouchMode屬性默認是true,所以在切換時Recycler