在我的故事板里,有一个UIImageView,它是根据自动布局约束自动定位和缩放的。
当应用程序运行时,这个UIImageView会根据设备屏幕大小和自动布局约束正确地调整大小和位置。
我如何在它显示在屏幕上后获取UIImageView的框架? 常见的UIImageView.bounds和UIImageView.frame值返回的是在故事板中使用的原始值,不反映新的UIImageView尺寸。
在我的故事板里,有一个UIImageView,它是根据自动布局约束自动定位和缩放的。
当应用程序运行时,这个UIImageView会根据设备屏幕大小和自动布局约束正确地调整大小和位置。
我如何在它显示在屏幕上后获取UIImageView的框架? 常见的UIImageView.bounds和UIImageView.frame值返回的是在故事板中使用的原始值,不反映新的UIImageView尺寸。
UIImageView
的正确框架/边界,您需要首先要求自动布局使用[yourImageView layoutIfNeeded]
更新该布局。这将解决您的约束并更新您的yourImage.bounds
。[myImageView layoutIfNeeded];
NSLog(@"w: %f, h: %f", myImageView.bounds.size.width, myImageView.bounds.size.height);
frame
是正确的选择,因为bounds
只返回原点的0。 - thedp请查看以下方法:
- (void)viewWillAppear:(BOOL)animated {
// view is about to be added to hieararchy
}
- (void)viewDidAppear:(BOOL)animated {
// view was added
}
- (void)viewDidLayoutSubviews {
// VC just laid off its views
}
frame
而不是 bounds
。 - thedp