關於使用masonry第三方自動布局獲取frame的一些問題


iphone屏幕大小越來越多樣化,使用frame來布局已經是強弩之末,好多同行前輩已經把autolayout研究的滾瓜爛熟了,但是蘋果的autolayout過於繁瑣,懶得去研究,有一個非常好用而且功能非常強大的第三方自動化布局框架masonry,簡書等各個論壇或者網站教程一大堆而且講的都比較詳細,多以直接站在巨人的肩膀上研究自動布局,真的是事半功倍,

以前做動畫很多時候需要用到frame,那么使用masonry之后你會發現取得的frame都為0,瞬間懵逼,這怎么搞,網上關於masonry的教程很多,但是對於這個問題相對來說比較少,在網上看了幾篇文章,對這個問題有所了解,那么怎么解決呢,先看一下這幾個方法!

setNeedsLayout

setNeedsLayout:告知頁面需要更新,但是不會立即開始更新.執行后立即調用layoutsubviews;

layoutIfNeeded

layoutIfNeeded:告知頁面需要立即更新,所以一般會和setNeededLayout配合使用.如果希望立即生成新的frame需要調用此方法,利用這點一般布局動畫可以使用這個方法是動畫生效.

layoutsubviews

layoutsubviews:系統重寫布局

setNeedsUpdateConstraints

setNeedsUpdateConstraints:告知需要更新約束,但是不會立刻開始

updateConstraintsIfNeeded

updateConstraintsIfNeeded:告知立刻更新約束

updateConstraints

updateConstraints:系統更新約束

那么了解完第一第二個方法之后我們的問題就很順利的解決了,當使用autolayout布局時如果需要取得某個控件的frame,我們只需要用該控件的對象調用setNeedsLayout和layoutIfNeeded方法然后實現layoutsubviews或者viewDidLayoutSubviews(當控件直接寫在controller里時)方法即可!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM