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