ios自動布局的坑和與之有關的特殊坑

2021-07-28 02:09:39 字數 1372 閱讀 9390

前行文

autolayout自動布局在ios開發中有其不可比擬的優勢,簡化的**,讓後期維護變得更簡單。這裡不做autolayout與autoresize的優勢分析,但是在開發過程中如果不注意就會遇到autolayout意想不到的坑,下面稍微總結一下,

1、關於frame

用autolayout和autoresize布局的檢視,在ui重新整理後的frame上,是相同的,但是在沒有重新整理前是不同的。換句話說,用autolayout布局後,如果用**更改其frame的話,在本次ui重新整理時會更新成你所設計的frame,然後在下一次ui重新整理完成的時候會變回你在storyboard裡所約束布局的樣子,這種情況在使用tableview、collectionview的reloaddata或textfiled時應有所注意,而歸根究底,是因為autolayout限制的frame問題。

2、關於特殊坑

之所在。

1、所更改frame的檢視為單一檢視或者檢視裡沒有變化的元素,兩種自動布局的方法都可以用**更改frame。2、所更改frame的檢視不為單一檢視,在檢視變化中有例如textfiled,label的變化。則會產生問題,什麼問題,**控制不了用autolayout的frame,

labelview.frame=cgrectmake(0,200,self.view.frame.size.width,100); _showlable.text = @"你的名字";

就像這樣,用autolayout布局的labelview裡有個label,在改變其frame時同時改變label的值,就會出現label變化但frame不變化的情況,類似的如改變textfiled的。但是如果用autoresing方法布局,就不會出現這種情況。怎麼辦,解決辦法就是用修改約束線的方法更改用autolayout布局的labelview裡有個可變label的frame的方法。

_viewlable.constant = 100.f;

_showlable.text = @"你的名字"

;

總之,如何避免所說的布局的坑,1、注意frame的呼叫方法 2、盡量不修改frame,若非要修改,那麼用autoresing的布局方法,可以**設定frame,用autolayout的方法在所涉及檢視沒有變化的情況下可以**設定frame的方式修改,關鍵點如果所涉及的檢視裡面有可變的元件,如label的值,也就是label的布局依賴於要改變的frame的檢視,那麼就用**設定frame的方法是設定不了的,用約束線的方法。

後續,可以試一下以下設定1、分別用autolayout布局基於self.view的uiviewtextfiled和基於self.view乙個子view的uiviewtextfiled,然後用**更新其frame看看有什麼相同或不同。歡迎反饋探索。

iOS之有關於git的命令列

1.git命令列操作步驟 1 git add 儲存 2 git commit m 給提交的資訊起名字 提交 3 git pull 把伺服器最新的 拉下來 4 git push origin 分支名 把合併好的 推入伺服器 2 git status 檢視你本地是否修改 建立檔案 新增 刪除 檢視xib...

ios 自動布局約束的問題

目前的自動布局的框架有兩個框架是很好用的乙個就是snapkit 還有個就是masonry,為什麼要使用框架,因為蘋果自帶的框架我們使用起來 寫的太多了。所以我們可以使用第三方框架來編寫。其中這裡補充一點就是我們如果已經給乙個控制項新增過約束,我們還想去修改的話,我們只需要通過下面這個 進行判斷,滿足...

分享 iOS開發 iOS自動布局的替換方案

ios自動布局的替換方案mylinearlayout,myrelativelayout,myframelayout 如果您不想使用ios的autolayout進行布局,如果您沒有使用xib進行頁面布局,那麼就試試這個庫吧,這個庫能滿足您進行 布局的各種要求,使用簡單方便。這是乙個功能強大的ios布局...