我正在开发一个关闭自动布局并默认设置为Iphone 5的应用程序。现在我在屏幕底部有一个UIView,当我在IB中的大小选项之间切换时,UIView正确地向上移动以修复自身到屏幕的底部。然而,当我在我的iPhone 4或模拟器上进行测试时,它不会向上移动,而是会被切断。
我怎样才能使应用程序底部的UIView向上分流到较小的iPhone 4?
请参阅以下示例
我基本上希望将白色盒子向上分流以填补灰色盒子下方的空隙。
更新
就视图层次结构而言,有一个包含视图,然后您看到的白色部分是一个简单的UIView(白色背景),里面有滚动视图。该项目相当新,所以设置非常简单,没有代码可以定位任何UIViews。
答案 0 :(得分: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中很有效,顶部有一个导航栏,你使用autolayout 不。
Position a UIView relative to the bottom of the parent view?
希望它有所帮助。
答案 1 :(得分:3)
你应该让你的弹簧和支柱(自动调整大小的面具)设置这样......
然后视图将保持距离屏幕底部的距离。
更新
在您的评论中,您说您已正确设置此设置但视图仍然被按下。但是,您问题中的图片并不像是一样。在4英寸版本中,您的视图似乎向上滚动到屏幕顶部,而3.5英寸版本则不然。我怀疑其中有原因(或者只是b / c你必须向上滚动你的4英寸以适应屏幕上的问题?)...你可以查看并更新你的问题,了解你的视图层次结构的更多细节。 / p>
答案 2 :(得分:2)
关闭AutoLayout,将视图放在屏幕上的位置是固定值。要进行此自动调整,您需要一些代码。您需要使用autoresizingMask
。以下是使用autoresizingMask /
UIView *view = [[UIView alloc] init];
[view setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin];
答案 3 :(得分:1)
最简单的方法是选择您的视图,然后转到编辑器 - > Pin - >底层空间到SuperView。无论设备分辨率如何,此选项都会将视图固定到容器视图的底部。
答案 4 :(得分: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)];