以编程方式获取UIImageView的大小

时间:2016-08-16 08:30:06

标签: ios iphone swift ipad uiimageview

我正在为iPhone和iPad创建一个应用程序。现在我想在不同的手机屏幕上检索UIImageView的大小。我尝试过以下代码:

print("width \(BubbleBackground.frame.size.width)")
print("height \(BubbleBackground.frame.size.height)")
print("width1 \(BubbleBackground.bounds.size.width)")
print("height1 \(BubbleBackground.bounds.size.height)")
print("width2\(BubbleBackground.image!.size.width)")
print("height2\(BubbleBackground.image!.size.height)")

我已尝试使用上面的代码,但无论它是在iPhone 5,iPhone 6,iPhone 6 plus还是iPad上运行,它们都会给我一个恒定的值。有没有人知道如何在不同设备上运行时获得图像大小?

2 个答案:

答案 0 :(得分:1)

您的图像在所有设备上的大小都相同,除非您在图像上设置了约束,使其大小调整以适应当前的屏幕尺寸。

约束通常使用Xcode的Interface Builder添加,但也可以以编程方式添加。

使用Interface Builder添加约束 https://developer.apple.com/library/prerelease/content/documentation/UserExperience/Conceptual/AutolayoutPG/WorkingwithConstraintsinInterfaceBuidler.html#//apple_ref/doc/uid/TP40010853-CH10-SW1

以编程方式添加约束 https://developer.apple.com/library/prerelease/content/documentation/UserExperience/Conceptual/AutolayoutPG/ProgrammaticallyCreatingConstraints.html

答案 1 :(得分:1)

您必须有一些限制才能根据屏幕大小更改imageView框架。然后,您可以在.layoutIfNeeded()(BubbleBackground.layoutIfNeeded())上使用UIImageView来获取其运行时大小。

请确保您在viewWillAppearviewDidLayoutSubviews或在这些事件发生后的任何时间执行此操作。