【问题标题】:iPhone iOS large UIView gets clipped to 320x460 when displayed. How to prevent?iPhone iOS 大 UIView 在显示时被裁剪为 320x460。如何预防?
【发布时间】:2012-04-11 17:32:08
【问题描述】:

我在情节提要中定义了一个 850x1100 UIView,它是普通窗口大小的 4 倍,我将它用作 PDF 生成模板。 该视图被包裹在一个滚动视图中。然而,当我显示视图时,它的框架会调整大小并变为 320x460,从而有效地切断了框架外的所有内容。

有没有人了解为什么我在故事板中定义为 850x1100 的 UIView 在 iPhone 上显示时会将其帧重置为 320x460?

【问题讨论】:

  • 您找到发生这种情况的原因了吗?

标签: iphone objective-c ios uiview bounds


【解决方案1】:

此帧重新计算不是错误。视图的框架表示其相对于屏幕坐标的位置和大小。

iPhone 的查看区域为 320x480,任何将其框架设置为大于设备查看区域的 CGRect 的视图都将被“裁剪”并将其框架设置回查看区域(320x460 的查看区域由于状态栏)。

试试:

scrollView.contentSize = CGSizeMake(850,1100);
scrollView.clipsToBounds = NO;
pdfView.clipsToBounds = NO;

【讨论】:

  • 我已经完全删除了滚动视图。现在我的主视图插座在我的故事板中配置为 850x1100 大小。然而,当主视图完成加载并显示时,它的框架设置为 320x460。它没有被剪裁,它实际上是在改变框架的大小。
  • 您创建的任何具有大于设备查看区域的框架的视图都会将其框架重置为设备的最大查看尺寸,在本例中为 320x460。您的解决方案肯定会涉及滚动视图,因为这是处理大于查看区域的内容的唯一方法(恕我直言)。
【解决方案2】:

你确定不是contentsize太小的scrollview?它不会根据内容自动调整大小 - 您必须明确设置 UIScrollViewcontentSize

【讨论】:

  • 不,我的视图奇迹般地改变了它的帧大小。为了测试这一点,我删除了所有额外的视图。 850x1100 的视图变为 320x460。我可以在 ViewDidAppear: 中将帧大小重置为正确的大小,但我正在寻找这个特殊错误的根源。
  • 在构建过程中,Storyboard 和 Interface Builder 发生了很多“魔法”。其中一些魔法正在调整您的视图大小。
猜你喜欢
  • 1970-01-01
  • 2019-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多