如何计算 UIImageView 大小?

Mat*_*lly 2 uiimageview ios swift

我有一个 Swift 应用程序,它将 UIImageView 设置为屏幕一部分的大小(使用自动约束设置为其上方的边距和控件),并且我使用 ImageView 的高度和宽度值以编程方式创建 3 个额外的 UIImageViews 并定位它们位于原始图像之上。我正在建造一个讲台并将三张图像放在讲台顶部的适当位置。然后我计算的高度和通过创建一个恒定的宽度的每个附加图像的:let conImageHeight = 0.4 * self.imgPodium.frame.height。但是,我无法获得原始图像的可靠高度和宽度。

最初我使用self.imgPodium.bounds.heightwhich 非常适合 iPhone 6 模拟器屏幕尺寸,但是当我尝试在 iPad 模拟器上运行该应用程序时,它保留了 iPhone 尺寸值。图像本身改变了大小,但是当我使用println()的高度和宽度时bounds,我得到了 iPhone 图像的值。

然后我改变并使用了self.imgPodium.frame.height但这并没有改变任何东西。

在通过自动约束定位自己后,是否有更好的方法来获取 UIImageView(或任何与此相关的控件)的高度和宽度?

谢谢。

我已经看过但没有帮助的问题: 在 Swift 中
编程方式更改 UIImageView 大小和位置如何在 swift
UIImageView Bounds、Frame
Cocoa 中编程方式检查 iphone 4 和 iphone 5 的屏幕大小:框架和边界之间有什么区别?
如何调整 UIImageView 的大小 (swift)

luk*_*302 5

viewDidLoad子视图中已加载和初始化但尚未布局。因此frame,例如,它们的属性尚不有效,并且可能是最初设计 UI 时在 Xcode 中设置的属性 - 然而这是不可靠的。您应该在可以确定布局已经发生的地方进行自定义布局:例如 inviewWillLayoutSubviewsviewDidLayoutSubviews。当布局以某种方式需要更改时,这两种方法也会被调用。在viewDidAppear布局中尚未完成,因此您也可以进行一些布局。但是,当布局因界面旋转而改变时,不会调用此代码。并且它会在呈现的 viewController 再次被解除后被调用。(不是你想要的)。

在这两种情况下:在中创建新的图像视图viewDidLoad并在viewWillLayoutSubviews或中进行布局viewDidLayoutSubviews