[問題] Autolayout的關係敘述

看板MacDev作者 (仁傑)時間10年前 (2015/08/20 10:42), 10年前編輯推噓8(8017)
留言25則, 6人參與, 最新討論串1/1
是這樣的 小弟目前在學習autolayout 我有四個view 每個view的關係式距離10 如果我把第二個view刪掉 第三個view之後會因為找不到關係連結而跑到畫面(0,0)的位置 又或者是第三個view會跟第一個view距離20 我要怎麼繼續讓第三個view跟第一個view距離10 示意圖 http://imgur.com/DX8uo7F
小弟目前做法是再重新敘述第三個view跟第一個view的關係式 但這樣下去不就寫到死了嗎~~~~~~ 請版上各位先進幫小弟解惑Q_Q ******************************************************** 是這樣的 http://youtu.be/z5VeuixzN_U
在以前的寫法 只要將rect.origin.x++跟y++即可 那如果以autolayout要達到這樣的效果 會很複雜嗎???? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.150.97 ※ 文章網址: https://www.ptt.cc/bbs/MacDev/M.1440038570.A.DD6.html

08/20 10:51, , 1F
你這幾個view是動態增加減少的嗎?
08/20 10:51, 1F
是的 再按下remove之後 第二個view被刪除 之後的view要補上去 類似android的 線性layout

08/20 11:43, , 2F
這個就算時手動layout也是要重算view3的位置資訊的
08/20 11:43, 2F

08/20 12:23, , 3F
我的意思是,這些view的個數是不定的,還是固定就只有
08/20 12:23, 3F

08/20 12:24, , 4F
四個,然後有可能會移掉第二個這樣?
08/20 12:24, 4F
是不固定的

08/20 13:28, , 5F
如果所有都不固定的話,那就每次移除新增就全部重設吧
08/20 13:28, 5F
謝謝大大 看來用手刻autolayout的都是神人了

08/20 15:00, , 6F
不要把他想得太難,其實就是一個reloadView而已
08/20 15:00, 6F

08/20 16:36, , 7F
這東西幹嘛用autolayout.. 我會用TABLEview就是了
08/20 16:36, 7F

08/21 00:25, , 8F
第三個view新增priority較低的constraint對上第一個vi
08/21 00:25, 8F

08/21 00:25, , 9F
ew
08/21 00:25, 9F

08/21 00:26, , 10F
View太多就建議用手寫
08/21 00:26, 10F
感謝大大建議

08/21 10:39, , 11F
把左邊跟上面2個constraint設為property
08/21 10:39, 11F

08/21 10:39, , 12F
要變動的時候移除這2個property對應到上一個
08/21 10:39, 12F

08/21 10:41, , 13F
romove n 之後再 reload n
08/21 10:41, 13F

08/21 10:44, , 14F
刪掉第1個,原本第3個跑到第2個,只要再設定2與1關係即可
08/21 10:44, 14F

08/21 10:44, , 15F
2
08/21 10:44, 15F

08/21 11:48, , 16F
問題是原po的view個數不定,也不一定是移掉2,這樣的話
08/21 11:48, 16F

08/21 11:48, , 17F
理論上應該是會有個array存所有的view,所以才說,要移
08/21 11:48, 17F

08/21 11:49, , 18F
掉Nth,就在array中移掉Nth的object,然後剩下的重新跑
08/21 11:49, 18F

08/21 11:50, , 19F
一次constraint的設定就好,這樣反而最方便
08/21 11:50, 19F
啊啊啊啊啊啊 搞不清楚啊~~~ ※ 編輯: s001582000 (125.227.150.97), 08/21/2015 17:17:52

08/22 03:01, , 20F
簡單的說,把constrain設Priority,這樣View2刪了,就會去
08/22 03:01, 20F

08/22 03:01, , 21F
找第二順位的Constrain
08/22 03:01, 21F

08/24 12:24, , 22F
remove n之後只要reload n,因為除了n以外的constraint
08/24 12:24, 22F

08/24 12:24, , 23F
都不會變
08/24 12:24, 23F

08/24 12:25, , 24F
reload n的意思是重新設定n與n-1的constraint
08/24 12:25, 24F

08/24 12:26, , 25F
若n=0則設定n與superview的關係
08/24 12:26, 25F
文章代碼(AID): #1LrJwgtM (MacDev)
文章代碼(AID): #1LrJwgtM (MacDev)