【问题标题】:Swift ios viewDidLoad, viewDidAppear image control size differentswift ios viewDidLoad,viewDidAppear图片控件大小不同
【发布时间】:2016-05-25 08:47:05
【问题描述】:

我注意到设置为全宽的 UiImageView 在 vi​​ewDidAppear 之前没有给出正确的宽度。

这对我来说有点问题,因为:

  • 我加载了一个可以有任何高度/宽度的自定义徽标图形
  • 这意味着为了保持比例(和全宽),我设置了一个高度约束以匹配 .png 文件中的宽度/高度比例

但是,我无法在 viewDidAppear 之前获得真实的图像宽度 - 也无法获得 viewWillAppear

我是否在这里遗漏了一个阶段/技术(xcode/ios/swift 的新手)或者我是否可以自己计算而不依赖于检索 uiimageview 的宽度?

【问题讨论】:

    标签: ios swift uiimageview


    【解决方案1】:

    请记住,viewDidLoad 仅在您的视图已加载且尚未放在超级视图上时调用,因此您仍然不知道它的最终帧如何,它只有您在其 xib 文件中定义的帧(如果有的话)

    但是随后您将其添加到超级视图中(以多种方式),因此(在其 autoresizingMask 之后)其帧大小发生变化,您只能在 viewDidAppear方法

    【讨论】:

    • 这通常不是您想要的,因为 viewDidAppear 方法仅在过渡动画完成后调用。
    • 对,但在这种情况下,您必须自己管理视图框架,然后才能将其添加到超级视图(即在 viewWillApper 中,您可以添加类似 self.view.frame = self.view. superview.bounds;/objective-c代码)
    • 所以假设我想做一个使用 viewWillAppear 的解决方案。我现在从 uiimagelogo.frame 中得到了他的“框架”......但由于它的大小不正确,我不能使用它。你建议我使用 self.view.superview.bounds?我现在就试试
    • 似乎工作 - 我认为代码应该添加到答案中,但它至少在 ipad 模拟器中工作 - 谢谢! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    相关资源
    最近更新 更多