【问题标题】:Resizing a UIView on iPhone at run-time在运行时调整 iPhone 上的 UIView 的大小
【发布时间】:2010-07-29 06:28:49
【问题描述】:

每当 iAd 从顶部向下滚动时,我都会尝试调整应用视图的大小。 问题是在运行时,当我设置相关视图的调整大小的帧大小时,调整大小不会发生 9因此 iAd 绘制在前 50 个垂直像素的顶部)。

如果我在设计时设置 UIView 大小,那么我会看到视图已调整大小(当我运行应用程序时)。

那么我在运行时做错了什么导致我无法调整大小?

我的控制器的NIB结构如下:

> > View

>   > View (associated with IB 'contentView')

>     > CustomView (UIView)

>        - ScrollView

>        - Toolbar (top)

>        - Toolbar (bottom)

在代码中,adBannerView 是这样添加的: [self.view addSubView:adBannerView];

conteView 的 origin.y 和 size.height 是我正在更新的内容(使其 y = 50,并且高度 = 原始高度 - 50)。这应该缩小它,以便有足够的空间来显示顶部的横幅(高度为 50 像素)。

【问题讨论】:

    标签: iphone uiview runtime resize iad


    【解决方案1】:

    你确定视图不是 nil 吗?你在 Interface Builder 中连接了它吗?如果您在视图上调用 -setFrame 并且没有发生任何事情,则视图可能无效。

    【讨论】:

    • 我做的一件事是在设计时通过界面构建​​器设置视图框架的 origin.y 和 size.height。有趣的是,当我这样做时,界面构建器看起来并不像我期望的那样,但是当我运行模拟器时它确实如此。简而言之,问题在于在运行时更新任何 UIView 的原点和大小,以便为 iAd 腾出空间(因此 iAd 不会与其他视图重叠)。 iAd 横幅(我认为它本身就是 UIViw)出现在我的预期中(顶部)。仅供参考,我将其用作参考:www.raywenderlich.com/1371/how-to-integrate-iad-into-your-iphone-app
    • 但是,我永远无法确定。我当然希望我的问题在于没有正确连接视图。我需要什么来确保我的视图有效?
    • 您是否将连接从 Interface Builder 中视图控制器的文件所有者拖到相关视图?此外,您可以在调试器中设置断点,并确保在查看控制器加载时视图不是 0x0 (nil)。
    • 我确实拖动了它(如我在原帖中绘制的 IB 图中所述)。我有一种感觉,它不是零,而是由于我拥有相当复杂的布局(可能吗?)。基本上我在视图中有一个视图(内部视图与代码中存在的 UIView 相关联,该代码严格用于显示壁纸图像)。我这样做的原因是我可以在壁纸顶部使用 ScrollLViewer(所以壁纸不会滚动)。为了让事情变得更疯狂,我在代码中添加了另一个视图(画布),它是我的绘图区域。它被添加到滚动查看器中。
    • @马特。仅供参考,关于您的最后一条评论,我通过对象所有者窗口(不是 GUI 设计器窗口)从文件所有者拖到有问题的视图。也许我应该尝试在设计器窗口中与实际的 GUI 视图建立文件所有者连接?
    【解决方案2】:

    我解决了我的问题,但以一种变通的方式。 我认为问题在于我的视图布局树非常复杂。例如,我在自定义 UIView 中有一个滚动查看器。滚动查看器在运行时添加 UIView 作为其内容。除此之外,我还试图调整各种视图的大小。

    但由于某种原因,视图从未设法底部对齐(它总是顶部对齐)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-10
      • 2014-09-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多