【问题标题】:Setting UIView on the left top corner is broken in ios Emulator/IPhone5?ios Emulator/IPhone5 左上角设置 UIView 坏了?
【发布时间】:2015-09-17 23:28:34
【问题描述】:

我正在尝试在屏幕顶部正下方显示一些UIView(例如UIButtonUITextView)。我不使用 IB 也不使用自动布局:我正在尝试手动操作。我的状态栏已禁用,因此我的applicationFrame == bounds 默认屏幕。

我的 UIView 的 frame.origin.y0。 在 iPhone4 和 iPad(仿真)上它可以正常工作:我在左上角看到我的元素。但是当我将模拟器设置为 IPhone5 时,该元素不显示(实际上,它显示在屏幕上方)。当我将其y 设置为大约 50 时,它会正确显示。

这是一个仿真错误还是我的代码有问题?

【问题讨论】:

  • 查看view的superview框架。有可能superview的y坐标可能不为0。你可以给superview设置背景色来检查它的位置。
  • 谢谢,但我有 framebounds 0 的超级视图。会不会是因为我是在 loadView 中检查的,而不是在 viewdidload 中检查的?

标签: ios objective-c iphone ipad uiview


【解决方案1】:

iPhone 4 运行的是什么版本的 iOS?,如果它是 6 或更低,那么它会正确显示。 从 iOS 7 及更高版本开始,如果您希望它位于状态栏下方,则必须将 topLayoutGuide 添加到视图的 frame.origin.y 中。我确定你的模拟器运行的是 iOS 8,这就是它不显示的原因。

【讨论】:

  • IOS 是 8.3,你是对的。那是因为IUViewController 自 IOS 7 以来占据了整个屏幕?但是topLayoutGuide0,也是parentView的那个。可能是因为我在loadView 中检查它,而不是在viewdidload 中检查它吗?
  • 你在使用故事板吗?如果是这样,那么您可以使用约束菜单底部的“最近邻居”弹出窗口。选择顶行并单击“添加 1 个约束”。这会将您的约束默认为顶部布局指南。如果您使用 VFL 代码或手动设置框架来执行此操作,请告诉我,我会告诉您如何操作。
【解决方案2】:

我刚刚发现状态栏(带有电池指示灯的那个)即使我打开它也不显示在 iPhone5 模拟器中(“状态栏最初是隐藏的 == NO”)。我滚动了我的模拟器并找到了 bar 和我的UIView!出于某种原因,iPhone5(但不是 Iphone4 或 iPad!)模拟器以屏幕滚动开始。可能我创建了很大的视图以适应屏幕(这很奇怪,因为使用了applicationFrame)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-26
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    • 1970-01-01
    • 2012-02-17
    相关资源
    最近更新 更多