2013-02-13 113 views
5

我正在开发一个应用程序,关闭自动布局,默认设置为Iphone 5.现在我有一个UIView在屏幕的底部,当我在IB的尺寸选项之间切换时,UIView正确地向上移动以修复自身屏幕的底部。但是,当我在iPhone 4或模拟器上测试时,它不会向上移动,而是被截断。如何修复UIView到屏幕底部?

我该怎么做才能让应用程序底部的UIView为较小的iPhone 4分流?

请看下面的例子

我基本上要被向上分流白盒以填充灰色框下方的间隙。

更新

在视图层次而言,有一种含有视图,然后将白色部分,你看到的是一个简单的UIView(白色背景)与内部的滚动视图。该项目是相当新的,所以设置非常简单,没有代码来定位任何UIViews。

+0

您使用的是AutoLayout吗?或AutoresizingMask? – Jaybit 2013-02-13 17:44:09

+0

我将AutoLayout关闭,我正在使用自动调整功能 – ORStudios 2013-02-13 17:45:27

+0

@IconicDigital,您的4英寸和3.5英寸图像没有比较类似于...请参阅我的更新回答 – foundry 2013-02-13 18:02:01

回答

7

获取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,并且您使用自动布局是

Position a UIView relative to the bottom of the parent view?

希望它可以帮助别人。

2

将AutoLayout关闭,您将视图放置在屏幕上的位置是固定值。要有这个自动调整,你需要一些代码。您将需要使用autoresizingMask。下面是从autoresizingMask/

UIView *view = [[UIView alloc] init]; 
[view setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin]; 
3

你应该有你的弹簧和支柱(自动调整大小掩码)设置这样的事情...

enter image description here

,那么该观点保持它的距离使用的实例屏幕的脚。

更新

您的评论,你说你有这个设置还没有正确的观点仍然是向下推。但是,您问题中的图像不会与“喜欢”类似。在4英寸版本中,您的视图似乎在屏幕顶部滚动,而3.5英寸版本则不是这种情况。我怀疑其中的原因(或仅仅是你必须滚动4英寸以适应屏幕上的问题?)...你可以检查,也许更新你的问题更多关于你的视图层次的细节。

+0

嗨,我已将它设置为这样但它仍然无视它。 – ORStudios 2013-02-13 17:52:54

+0

@IconicDigital - 好的,那很奇怪。你有任何代码制作/设置视图的框架参数,或类似的东西? – foundry 2013-02-13 17:54:05

+0

有趣的是,如果我在IB的尺寸之间切换,它可以很好地移动它。如果你在模拟器中测试它会将其切断。 – ORStudios 2013-02-13 17:57:26

1

最简单的方法是选择你的视图,然后转到编辑器 - >针 - >底部空间到SuperView。无论设备的分辨率如何,此选项都会将您的视图修复到容器视图的底部。

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)];