image.png
image.png
如圖,baseView是根據(jù)safeView進(jìn)行大小自適應(yīng)的;
subView的高度大小是baseView的一半;
在加載時(shí),視圖的大小分別是: 293 * 156 和 273 * 78;
視圖加載完畢后:
image.png
image.png
發(fā)現(xiàn) baseView的大小在layoutSubviews
中已經(jīng)進(jìn)行了更新;但是問(wèn)題是 baseView下的子視圖 subView 卻沒(méi)有更新;
原因:baseView的大小更新后,才會(huì)對(duì)后面的子view進(jìn)行更新,也就是可以理解為是 baseView在它自己的
layoutSubviews
下才能拿到 它下面的子view的大小;
解決:
image.png
直接在 layoutSubviews
下 進(jìn)行必要的布局更新 layoutIfNeeded
,這個(gè)方法調(diào)動(dòng)后意味著 所有的視圖,包括父視圖,子視圖都完成了約束更新,可以理解為是 baseView自己的 layoutSubviews
也執(zhí)行完比.再去獲取 子view 約束,就是正確的了;