在xib文件上设置的约束不适用于ipad ios

时间:2016-04-18 16:02:50

标签: ios xcode autolayout interface-builder

我有一个应用程序,我想在iphone和ipad上运行。我正在使用xib文件和自动布局。布局非常适合所有iphone模拟器,但不适用于ipad。我有一个覆盖整个屏幕的UIImageView,我希望它完全覆盖iphone和ipad的所有屏幕。所以我设置了以下约束:

enter image description here

其中new_BG.png是后台UIImageView。

但是当我在ipad模拟器上运行应用程序时,图像只覆盖屏幕的一部分。这是一个屏幕截图:

enter image description here

我需要为图像添加哪些约束来覆盖整个屏幕? xib的图片: enter image description here

还有一件事。我尝试在代码中设置图像视图的框架,使其等于屏幕大小的高度和宽度,如下所示:

CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
CGFloat screenHeight = screenRect.size.height;
new_BG.frame = CGRectMake(0, 0, screenWidth, screenHeight);

但是在ipad上运行时它仍然只覆盖屏幕的左上角。然后我将宽度和高度更改为100,并且在ipad上运行时仍然没有变化。

2 个答案:

答案 0 :(得分:0)

  1. 您的约束集是多余的 - 您可以用单一关系替换.centerX和.centerY约束: new_BG.png.bottom - Superview.Bottom

  2. 如果将“模式”属性设置为“左上角”,UIImageView可能会以这种方式显示其UIImage。

  3. 由于您的UI元素布局错误,我认为问题不仅限于UIImageView(如果只有您的图片包含自身描绘的UI元素)

答案 1 :(得分:0)

不要给出任何中心约束,例如中心x或中心y。只需给leading,trailing,bottom and top。这将覆盖iphone和ipad的全屏。

我还有uiview使用的自定义导航栏。所以给它约束 - leading,trailing,top and fix height

希望这会奏效。