【问题标题】:bounds of imageView are always 240imageView 的边界总是 240
【发布时间】:2016-05-05 15:45:10
【问题描述】:

我有一个可能让我发疯的简单错误。 我正在 UIScrollView 中使用 UIImageView。为了使图像适合视图,我想获取 imageView 的宽度来调整缩放比例。 但是代码

imageView.bounds.width 

无论实际图像的大小如何,总是返回 240.0。 在 Interface Builder 中,imageView 在视图中水平和垂直居中,clip subviews 为 true,Mode 为 aspect fit。 有任何想法吗?

【问题讨论】:

  • 你是如何布置视图的?您使用的是约束还是框架?我们可以看到这段代码或在界面生成器中设置的约束吗?
  • 什么时候访问宽度?如果它在viewDidLoad 中,则此值将始终是您的故事板值。在viewDidAppear 中,出口的实际框架和边界已经由系统设置,它们的值应该会改变。
  • 无论图像的尺寸是多少,图像视图的尺寸都将保持不变。您确定要查看边界矩形吗? (我认为您的问题需要更多细节才能获得有用的答案)
  • 我在界面生成器中使用了约束。问题仍然存在于 viewDidAppear 中。这似乎是我的设置的普遍问题。我刚刚创建了一个新项目,只有一个 viewController 和完全相同的约束……这里一切正常。尽管如此,在我的设置中找到这个错误会很棒,因为我已经在它上面工作了很长时间。
  • 我找到了一种解决方法。通过从该项目中的新项目复制 viewController,问题不再出现。不是一个优雅的解决方案......但它有效。感谢您的快速回复。

标签: ios xcode swift


【解决方案1】:

UIImageView 的大小与其包含的图像大小无关。 UIImageView 在情节提要或您生成它的任何其他地方可能大小为 240.0。图像将根据模式缩小或放大以适合视图。要获取实际 图像 的大小,请尝试以下代码:

let image = UIImage("my_image_file")
let imageHeight = image.size.height
let imageWidth = image.size.width

现在知道图像的大小,您可以适当地设置视图的大小。

【讨论】:

  • 或者设置图片后直接在图片视图上调用sizeToFit
【解决方案2】:

我遇到了同样的问题。现在我检查 main_queue 中的边界,一切正常。

 dispatch_async(dispatch_get_main_queue(), {
     print(self.image.bounds.width)
 })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-04
    • 2023-03-15
    相关资源
    最近更新 更多