iOS 7 addSubview 为我的 UIView 添加了额外的长度,这是为啥呢?

Posted

技术标签:

【中文标题】iOS 7 addSubview 为我的 UIView 添加了额外的长度,这是为啥呢?【英文标题】:iOS 7 addSubview adds additional length to my UIView, why is this?iOS 7 addSubview 为我的 UIView 添加了额外的长度,这是为什么呢? 【发布时间】:2013-12-27 01:54:38 【问题描述】:

在我的应用程序中,我在一个窗口中有一个视图控制器,可以在需要时添加一些子视图。所有子视图都使用 IBActions 和以下代码显示:

[self.view addSubview:myViewIWantToAdd];

除了一个视图之外,所有这些都以正确的尺寸和位置显示。该方法似乎在试图显示的视图的长度上增加了 20 个像素,以产生以下效果:

http://i.stack.imgur.com/th11f.png

您可以从图像中看到,底部字母拼贴在屏幕边界下方额外延伸了 20 像素。我可以通过将视图的大小从高度 568 减小到 548 来修复它。但是这样做会产生一种特殊的效果。当 UIView 的高度设置为 548 时,可触摸(用户交互)区域也减少了 20 个像素。这意味着用户不能选择底部字母拼贴的下半部分。在这个阶段我很迷茫,因为我正在实现 UIView,就像应用程序中的任何其他 UIView 一样,根本没有任何问题。我该如何解决这个问题/我做错了什么?

附:我在 ios 6 中从未遇到过这个问题,我相信这与 iOS 7 有关。

【问题讨论】:

【参考方案1】:

在 ios 7 中,您的窗口位于状态栏下方,因此您的窗口高度会高出 20 点。

您可以调整子视图的框架并设置适当的视图 autoresizingMask 属性来解决它。

如果您想让您的应用符合 ios7 的外观,请参阅link

【讨论】:

【参考方案2】:

请在您的设备上进行相同的测试。

【讨论】:

它发生在模拟器和真实设备上。

以上是关于iOS 7 addSubview 为我的 UIView 添加了额外的长度,这是为啥呢?的主要内容,如果未能解决你的问题,请参考以下文章

addSubview 在调整大小的框架之外

如何在一行代码中将多个子视图添加到我的 iOS 视图中? (也许通过“monkeypatching”一个 `addSubviews` 实例方法到 UIView?)

addSubview 在 iOS 3.1.3 上不显示视图

iOS - 在 UIScrollView 上使用 addSubView

UINavigationBar 外观 addSubview 在 iOS 8 中不起作用

addSubview 崩溃 iOS 5.1 但不是 6.1