5

我正在开发一个关闭自动布局并默认设置为 Iphone 5 的应用程序。现在我在屏幕底部有一个 UIView,当我在 IB 中的大小选项之间切换时,UIView 正确地向上移动以将自身固定到底部的屏幕。然而,当我在我的 iPhone 4 或模拟器上进行测试时,它并没有向上移动,而是被切断了。

我怎样才能使应用程序底部的 UIView 向上分流到较小的 iPhone 4?

请参阅以下示例

我基本上希望白色盒子向上分流以填补灰色盒子下方的空隙。

更新

在视图层次结构方面,有一个包含视图,然后您看到的白色部分是一个简单的 UIView(白色背景),里面有一个滚动视图。该项目相当新,因此设置非常简单,并且没有任何代码可以定位任何 UIView。

4

5 回答 5

8

获取 Y 坐标,获取屏幕高度,减去主视图上方的任何 UI 元素(如状态栏)并减去您放置的 UIView 的高度。例如:

float y = [UIScreen mainScreen].bounds.size.height - [UIApplication sharedApplication].statusBarFrame.size.height - myView.frame.size.height;
[myView setFrame:CGRectMake(0, y, myView.frame.size.width, myView.frame.size.height)];

这是一个非常典型的完整示例...2013 ...这在顶部带有导航栏的 UITableViewController 中运行良好,并且您没有使用自动布局。

相对于父视图的底部定位 UIView?

希望它可以帮助某人。

于 2013-02-13T17:50:10.557 回答
3

你应该让你的弹簧和支柱(自动调整面具)设置这样的东西......

在此处输入图像描述

然后视图将保持与屏幕底部的距离。

更新

在您的评论中,您说您正确设置了此设置,但视图仍被向下推。但是,您问题中的图像无法进行比较。在 4 英寸版本中,您的视图似乎向上滚动到屏幕顶部上方,而 3.5 英寸版本不是这种情况。我怀疑其中的原因(或者只是 b/c 您必须向上滚动 4 英寸以适应屏幕上的问题?)...您可以检查并使用有关视图层次结构的更多详细信息更新您的问题。

于 2013-02-13T17:52:11.470 回答
2

在 AutoLayout 关闭的情况下,您在屏幕上放置视图的位置是一个固定值。要进行此自动调整,您需要一些代码。您将需要使用autoresizingMask. 这是使用 autoresizingMask/ 的示例

UIView *view = [[UIView alloc] init];
[view setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin];
于 2013-02-13T17:51:35.833 回答
1

最简单的方法是选择您的视图,然后转到 Editor -> Pin -> Bottom Space to SuperView。无论设备分辨率如何,此选项都会将您的视图固定到容器视图的底部。

于 2014-01-10T18:53:43.143 回答
1

扩展@Joel 的答案,对于 iOS 7,我们不需要减去 statusBar 的高度。

float y = [UIScreen mainScreen].bounds.size.height - myView.frame.size.height;
[myView setFrame:CGRectMake(0, y, myView.frame.size.width, myView.frame.size.height)];
于 2014-09-03T22:40:50.120 回答