我有一个 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/