ios - 如果在 IB 中使用自动布局设置 View ,如果您尝试以编程方式更改其框架,会发生什么情况?

标签 ios macos cocoa cocoa-touch autolayout

我开始帮助的一个项目之前没有使用自动布局,我正在更新它以使用自动布局和大小类。整个应用程序中有大量的框架操作代码(例如,直接设置框架而不是更改约束常量),我想知道这会如何影响使用自动布局约束设置的 View 。

我正在努力消除代码的帧更改部分,并将其更改为在需要时更新约束常量,但由于我还不是 100% 熟悉每一段代码的工作原理,所以它会有助于更好地了解自动布局和编码框架更改如何相互影响,以便如果 View 在运行时未正确显示,我可以更好地确定它是我设置的东西还是某个地方的一段旧代码需要被发现和更新。

最佳答案

非常简单。您只需要了解什么是自动布局

这是它的工作原理。约束只是指令列表;他们自己实际上并没有做任何事情。有一条系统消息 layoutSubviews,它会在您无法控制的时刻发送 - 所以您应该想象它可以随时发送。当实际发送 layoutSubviews 时,将引用并遵守约束(通过完全按照您的意愿进行操作——也就是说,运行时设置 frame ,或每个 View 的 boundscenter)。

因此,您可以自由更改 View 的 frame,但请注意,如果 layoutSubviews 被发送并且约束与 frame, View 将回到约束要求放置它的位置。

关于ios - 如果在 IB 中使用自动布局设置 View ,如果您尝试以编程方式更改其框架,会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36136430/

相关文章:

ios - 使自定义单元格 100% 透明

android - Adobe Air 在 iOS 上可以正常运行吗?

macos - Mac 应用程序中的导航 Controller 与 iOS 应用程序类似吗?

ruby - 无法在 OSX 10.10.5 中安装 cocoa pod

objective-c - 为什么不用 "with"启动便利构造函数?

cocoa - 链接到 Leopard 的 libcrypto?

macos - OS X 应用程序菜单栏未显示正确的标题

ios - 线程 0 崩溃,SIGABRT 异常和 __pthread_kill

ios - 建立一个简单的均衡器

ios - 如何使用正则表达式检查私有(private)/本地 IP 地址