ios - 3.5英寸布局切断屏幕底部

时间:2014-01-04 04:33:26

标签: ios7 autolayout

我有一个应用程序正在关闭3.5英寸屏幕的底部工具栏(在下面的屏幕截图中添加或更新照片栏)。对于4英寸屏幕,一切都很完美。

这只发生在我在模拟器中运行应用程序时。故事板中的预览对于4“和3.5”都很好。enter image description here enter image description here enter image description here enter image description here

我确实怀疑自动布局问题,但我真的不知道如何处理问题,因为它在故事板视图中很好。正确的方法是使用autolayout使tableview缩小,垂直尺寸减小?

感谢您的帮助!

3 个答案:

答案 0 :(得分:9)

首先,您需要取消选中storyboard中的选项,默认情况下启用或在iOS 7中选中

Set edges of view

结束然后如果问题没有解决,您需要通过检查下图中显示的选项启用故事板中的自动布局

select tab

&安培;

Enable autolayout

更新1

如果要应用约束,请按照以下步骤操作:

Step 1

Step 2

Step 3

&安培;如果它给出任何警告或错误添加其他必需的约束

答案 1 :(得分:0)

我这样解决了这个问题。

我有一系列宏(感谢几个月前在stackoverflow上的其他人的答案),我用它来确定正在使用哪个设备。他们是:

#define IS_IPAD                 (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define IS_IPHONE               (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
#define IS_IPHONE_5             (IS_IPHONE && [[UIScreen mainScreen]bounds].size.height == 568.0f)

我知道有些人反对使用宏并且有充分的理由,但我觉得它们在某些情况下很有用。因此,为了彻底,可以将宏写为方法。

-(BOOL)isIpad  {return UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ? YES : NO;}
-(BOOL)isIphone {return UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone ? YES : NO;}
-(BOOL)isIphone5  {return ([self isIphone] && [[UIScreen mainScreen]bounds].size.height == 568.0f) ? YES : NO;}

我将它们放在一个专门用于名为ResourceConstants.h的宏的.h文件中。我将此文件导入到我需要使用它的任何类中。

一旦定义了这些,请转到视图控制器中的-viewDidLoad方法并设置视图框架,如下所示:

if (IS_IPHONE)
    self.view.frame = CGRectMake(0, 0, 320, 480);

- 编辑 - 您可能还需要调整屏幕上对象/小部件的位置/大小,因为整个屏幕缩短了半英寸。只要在视图控制器上创建属性出口以引用屏幕上需要调整大小的任何对象,就可以以相同的方式执行此操作。像这样,

 self.myobject.frame = CGRectMake(myTopLeftCornerXCoord, myTopLeftCornerYCoord, myWidth, myHeight);

希望有所帮助! :)

答案 2 :(得分:0)

谢谢Claric,我不知道模拟的指标设置。但这实际上并没有解决问题......

但我最终通过删除所有约束并再次创建它来解决问题。然后神奇地工作了。