【发布时间】:2015-05-17 07:50:19
【问题描述】:
我有一个 Swift 应用程序,它将 UIImageView 设置为屏幕一部分的大小(使用自动约束设置到其上方的边距和控件),并且我使用 ImageView 的高度和宽度值来创建 3 个额外的 UIImageViews以编程方式并将它们放置在原始图像的顶部。我正在建造一个讲台,并将三个图像放在讲台顶部的适当位置。然后我通过创建一个常量来计算每个附加图像的高度和宽度:let conImageHeight = 0.4 * self.imgPodium.frame.height。但是,我无法获得原始图像的可靠高度和宽度。
最初我使用self.imgPodium.bounds.height,它非常适合 iPhone 6 模拟器的屏幕尺寸,但是当我尝试在 iPad 模拟器上运行该应用程序时,它保留了 iPhone 的尺寸值。图像本身改变了大小,但是当我使用boundsprintln() 的高度和宽度时,我得到了 iPhone 图像的值。
然后我更改并使用了self.imgPodium.frame.height,但这并没有改变任何东西。
在通过自动约束定位自身后,有没有更好的方法来获取 UIImageView(或任何相关控件)的高度和宽度?
谢谢。
我已经看过但没有帮助的问题:
Change UIImageView size and position programmatically in Swift
how to check screen size of iphone 4 and iphone 5 programmatically in swift
UIImageView Bounds, Frame
Cocoa: What's the difference between the frame and the bounds?
How to resize an UIImageView (swift)
【问题讨论】:
-
您在哪里尝试访问 self.imgPodium 维度?视图加载了吗?也许这些约束还没有计算出来?
-
@Bhendricks 是的,它在
override func viewDidLoad()中调用 -
您可能需要在
viewDidLoad中输入layoutSubviews以获取完整的数字,或将代码移至viewDidAppear -
@BHendricks 好的,我在
viewDidAppear中调用了代码,这似乎有效。你知道为什么它在viewDidLoad中不起作用吗?
标签: ios swift uiimageview