ios - Autolayout 完成后是否会触发 iOS 方法?

标签 ios autolayout viewdidload

我有一个 iOS 应用程序,我需要知道新 View 何时在屏幕上完全可见;也就是说,当 Autolayout 完成计算并且 View 完成绘制时。

ViewDidAppear 似乎在 View 完全可见之前就已触发。如果我关闭 Autolayout,时间似乎与人类感知一致,但我需要在这个项目中使用 Autolayout(所以这不是解决方案......只是一个测试)。

Autolayout 计算完成后有什么方法可以触发吗?或者当 View 实际可见时触发的另一种方法(因为 ViewDidAppear 不适用于此)?

谢谢!

最佳答案

以下可用于避免多次调用:

- (void) didFinishAutoLayout {

    // Do some stuff here.    

    NSLog(@"didFinishAutoLayout");
}

- (void) viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];


    [NSObject cancelPreviousPerformRequestsWithTarget:self
                                 selector:@selector(didFinishAutoLayout)
                                           object:nil];
    [self performSelector:@selector(didFinishAutoLayout) withObject:nil
               afterDelay:0];
}

关于ios - Autolayout 完成后是否会触发 iOS 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23555275/

相关文章:

ios - 通过 ARM NEON 进行向量矩阵乘法

ios - 具有共享数据的应用程序的初始点

iOS 8 : UITableViewCell. contentView 不调整其中的 subview

swift - 如何修复 viewDIdLoad 中的 indexPath 错误?

iphone - 我们如何检查被用户或 iOS 杀死的 ios 应用程序

ios - 如何使 UIBezierPath 可选择

ios - 将 TableView 与许多自定义单元格和自动布局一起使用

ios - 在 iPad 屏幕中使用自动布局时按钮宽度会变长?

iphone - 在 UINavigationController 中按下后退按钮时如何调用 viewDidLoad 方法? (iPhone/iPad)

ios - 如何在 popViewController 之前刷新 View 的内容?