請參閱下面的更新:Suppess UIView在子視圖更改時重新排版
當子視圖正在移動時,我對UIView佈局感到困惑。我有一個「Surface」UIView上有幾個「Item」子視圖。用戶可以點擊這些項目並將它們拖到表面上。
雖然我注意到,只要Surface的Item子視圖移動(被用戶拖動),Surface就被標記爲需要被中繼。
我不希望Surface在用戶移動它們之後佈置項目。這非常重要,我允許用戶在他們認爲合適的時候對其進行定位。但是,有時候,初始創建就是一個很好的例子,我確實需要Surface來放置這些項目。
所以我想兩件事情之一:
A)禁止SetNeedsLayout()表面上調用時,其子視圖項改變(移動)之一。
--OR -
B)知道我爲什麼被要求重新佈局,如果它是由項目運動造成的,什麼也不做。
我無法想象我是第一個有這個問題.... :)
###### UPDATE:更多的調查之後,我發現更多關於到底是怎麼回事。正如我原先認爲的那樣,移動Surface的項目並不是導致Surface重新佈局。這只是導致重新佈局的阻力的開始。在深入挖掘中,我發現它甚至不是原因的阻力,而是對Surface的bringSubviewToFront的調用。
我需要將物品放在前面,這樣當它被拖拽時,它會出現在其他物品之上。
我可以理解爲什麼帶一個子視圖可能會觸發重新佈局,但它不是我想要發生的事情。
你有沒有嘗試在你的Surface類中覆蓋'setNeedsLayout:'? – 2012-02-16 00:44:34