我有一个使用AutoLayout的视图,它可以在不同的屏幕尺寸下很好地工作。屏幕上会移动一个元素,具体取决于用户的操作。每当我向下导航到另一个屏幕然后返回该视图时,此元素都会重置为原始位置。

我知道为什么会发生这种情况,但是如何预防呢?我确实希望最初正确设置它,但不要在第一次之后正确设置。

最佳答案

如果您使用的是Autolayout,则永远不要使用setFrame / setBounds,因为如您所见,Autolayout会忽略它们并在更新时重写它们。

解决方案是更改约束。约束具有名为constant的参数,这是创建约束后您只能更改的唯一内容。您还可以在需要移动NSView时添加/删除额外的约束。

WWDC 2012中有一个视频,其中有一个很好的示例,说明了如何使用AutoLayout移动视图。

10-06 09:02