有没有办法在自动布局之前 运行 .frame.origin.y

Is there a way to run .frame.origin.y before the auto layout

我正在使用自动版式并将文本字段彼此对齐。但是现在整个应用程序都准备好了,有一种特殊情况,除了一个文本字段外,所有内容都将被隐藏。所以我将此文本字段向上移动 .frame.origin.y

问题是这个文本字段现在出现在中间一秒钟,因为 autolauout 先完成它的工作。我不想完全关闭自动布局,我只是希望能够在自动布局之前进行一些操作。

我试过viewdidappear和viewdidload的开头

将您的代码放入 viewDidLayoutSubviews。那是应用自动布局的时刻。使用条件来确保您的代码仅在正确的条件下运行,因为 viewDidLayoutSubviews 在您的应用程序的生命周期中可以被多次调用,并且大多数时候您不希望它做任何特殊的事情。

请注意,更改 frame.origin.y 会导致与您的自动布局约束发生冲突。做这种事情的正确方法是改变 constraints。您可能需要将出口配置为所需的约束,以便您可以在代码中引用它;这样,您只需更改该约束的 constant.