见下面的更新:
当子视图正在移动时,我对UIView布局感到困惑。我有一个“Surface”UIView,上面有几个“Item”子视图。允许用户单击项目并在表面上拖动它们。
我注意到的是,只要Surface的项目子视图移动(被用户拖动),Surface就会被标记为需要被中继。
我不希望Surface在用户移动它们之后布置它们。这几乎就是重点,我允许用户按照自己的意愿定位。但是,有时候,初始创建是一个很好的例子,我需要Surface来放置项目。
所以我想要两件事之一:
A)当其中一个Item子视图发生变化(移动)时,抑制表面上的SetNeedsLayout()调用。
- 或 -
B)知道为什么我被要求重新布局,如果它是由项目动作引起的,那么什么都不做。
我无法想象我是第一个有这个问题的人......:)
######更新:经过更多调查后,我发现了更多关于正在发生的事情。正如我原先想的那样,移动Surface的项目不会导致Surface重新布局。这只是引发重新布局的阻力的开始。在进一步挖掘中,我发现它甚至不是拖拽的原因,而是对Surface的调用带来了SubSubviewToFront。
我需要将项目放在前面,这样当它被拖动时,它会显示在其他项目之上。
我可以理解为什么带子视图可能会触发重新布局,但同样不是我想要发生的事情。
答案 0 :(得分:1)
您可以覆盖Surface UIView中的layoutSubviews。