Re: [心得] 最簡單的 scroll view sample 遇到問題

作者: HuangJC (吹笛牧童)   2014-03-22 04:15:16
剛才才試出來的一點心得
敝公司的 layout 是有 navigation bar 的
不知是天生如此還是同事動態建立元件的關係
在自己寫測試程式時,我向來把元件在 viewDidLoad 裡就佈置好,這招不靈了
比如,我放了一個 scroll view 和全畫面一樣大,320*568
但設定好後畫面卻變成 320*536; 上面有 32 pixel 是 title,是後來才擠進來的
這會使我的 layout 全部錯亂
解決方法是在 viewDidLayoutSubviews 時才去擺元件
這時我已經可以知道 root view 真正的尺寸
但另一個問題是我在此下中斷點,發現有時會被呼叫兩次
這很合理, relayout 就是會在各種條件下不斷重試
(喔,MFC 累積的經驗還是可以對照的好嘛)
會重覆呼叫,那元件不就重產生一套?!
事實如此,同事的解決方法是重進入時就把 subviews 清掉,重建一次
不過我的想法是:在 viewDidLoad 時建立一次,
在 viewDidLayoutSubviews 時只做 relayout
不重產生元件,只擺擺位置
這樣只是重擺擺,元件就不會重覆了
------
元件重擺,如果有寫 auto relayout 就不必再費心 (constrant)
但我有些是手動產生的元件,也不想去寫這個(老實說是不會寫)
目前我學到的 constrant,有上下左右 offset,或兩元件間距離,對齊
但卻無法塞入數學計算,我是指像 android 的 weight(比重)
比如我有一個元件,想佔畫面寬度的 1/3,
在 android 我可以宣告兩塊空間,比重值為 1:2,那麼一塊就是 1/3,另一塊是 2/3
ios 有類似的做法嗎?
另外 multipler 是什麼? 查到只說'一般用不到,設為1就好'
會不會這個就是比重值的設定呢?
(我的要求是畫面要一次看到入四個 table cell, 而一共有 15 個 cell
所以知道高度後 total = hight / 4 * 15, 會是這樣要計算一下,
constrant 我不會設這麼複雜的)
作者: whitefur (白毛)   2014-03-22 11:53:00
你需要把autolayout讀熟....請google Auto Layout Guide, 拉UI的時候很有幫助
作者: HuangJC (吹笛牧童)   2014-03-22 15:48:00
唉,一是英文不好,另一是即使單字都看懂了,整篇還是支這文件就算全是中文,我也還得中翻中啊…
作者: whitefur (白毛)   2014-03-23 11:38:00
可以參考本板 #1I_3tqH2 裡面有lifecycle的連結
作者: Blueshiva (龍野南雲)   2014-03-23 13:05:00
老實說除非你們要做的UI效果很特殊,需要去攔截系統,不然搞這種土法煉鋼的時間拿去學auto layout效益其實大得多,更別提你攔截系統行為太多會不會被Apple退件的問題
作者: HuangJC (吹笛牧童)   2014-03-24 19:04:00
不會吧,viewDidLayoutSubView在文件上有啊,公開 API你說我沒讀熟文件是對的,但我也算是照規矩來啊..
作者: howdiun (Howdiun)   2014-04-02 12:15:00
可以先用用看autoresizing

Links booklink

Contact Us: admin [ a t ] ucptt.com