布局布局后的 Swift Autolayout 回调函数

Posted

技术标签:

【中文标题】布局布局后的 Swift Autolayout 回调函数【英文标题】:Swift Autolayout callback function once layout is laid out 【发布时间】:2016-02-17 14:31:54 【问题描述】:

我如何知道自动布局何时布局?

有回调函数吗?

我正在使用 SnapKit,我想在布局视图时设置一些东西。

我有类似下面的东西,

vehicleGroup.snp_makeConstraints  (make) -> Void in
    make.width.equalTo(self.headerView).offset(-20)
    make.centerX.equalTo(self)
    make.top.bottom.equalTo(self.headerView)

一旦布局了上面的视图,我想使用下面的视图的宽度和高度,

vehicleGroup.contentSize = CGSize(width: vehicleGroup.frame.width, height: vehicleGroup.frame.size.height)

【问题讨论】:

可能viewDidLayoutSubviews 是你最好的选择。 【参考方案1】:

好吧,没有回调,但您可以覆盖 UIView 类的 -layoutSubviews(自动布局发挥其魔力)。但是不能保证自动布局已经完成它的事情,-layoutSubviews 可以在视图出现在屏幕上之前多次调用。

如果您需要 UIViewController,那么您需要覆盖与 UIView-layoutSubviews 非常相似的 -viewDidLayoutSubviews

【讨论】:

以上是关于布局布局后的 Swift Autolayout 回调函数的主要内容,如果未能解决你的问题,请参考以下文章

Swift + Autolayout:旋转 UILabel,保持在 UIView 旁边

Swift:自动布局 - 文本列 - 删除尾随和前导警告

Swift - UIScrollView 内的 UICollectionView - 自动布局

SnapKit swift实现高度自适应的新浪微博布局

自动布局,异步加载图像到 uiimageview (Swift, xCode6)

Swift - 自动布局库SnapKit的使用详解1(配置使用方法样例)