UIView以编程方式添加了全屏错误的大小

时间:2016-02-11 23:41:00

标签: ios objective-c uiview uiviewcontroller

在我进入细节之前,我想提一下,我已经尝试了有关添加LaunchImages / LaunchScreen.xib等的所有教程,但这些都没有对我有用。也许我做错了所以如果你认为我错过了什么,请告诉我。

因此,我的大多数视图都是使用Interface Builder / Auto Layout创建的,并且它们可以扩展到所有模拟器,iPhone 4s-iPhone 6s plus的正确大小。

然而,对于我的一个观点,我做的有点不同,它似乎保持在iPhone 4S屏幕大小,无论我在哪个模拟器上运行它。 (Aka在视图周围有空白区域)

这就是我的所作所为:

我有一个CustomView.XIB,我使用AutoLayout添加了一堆按钮/标签/等。

我也制作CustomView.h和.m文件:

- (instancetype)initWithNib {
    self = [super initWithFrame:[[UIScreen mainScreen] bounds]];
    if (self) {

        NSLog(@"Screen bounds height in view: %f",[UIScreen mainScreen].bounds.size.height);

        NSBundle *bundle = [NSBundle bundleForClass:[self class]];
        UINib *nib = [UINib nibWithNibName:@"CustomView" bundle:bundle];
        CustomView *view = [nib instantiateWithOwner:self options:nil][0];

        [self addSubview:view];
    }
    return self;
}

在我的CustomViewController.m文件中我有:

currentCustomView = [[CustomView alloc] initWithNib];
[self.view addSubview:currentCustomView];

所以实际上我并不认为[[UIScreen mainScreen]界限]是错误的。 CustomViewController和CustomView都返回相同的不正确的绑定。为什么ViewController的边界不正确?为什么iPhone 4s总是受限制而不是用不同的模拟器改变?

我在图片资源中有我的启动图片:

Launch images assets

在属性部分:

properties section

另一个问题:如果我只支持IOS 9及更高版本,我觉得我不需要iOS 6和Prior发布图像。然后它在某些仿真器版本上无法正常工作。但是我认为所有的iPhone 4s-6s都可以支持iOS9,为什么他们这样设置呢?

1 个答案:

答案 0 :(得分:0)

在尝试不同的事情2天后,我们已经想出了如何做到这一点。

对于阅读此内容的人来说,甚至不担心发布图像和所有爵士乐。只需使用AutoLayout,它将为您的viewcontroller缩放视图。我必须这样做:

[查看setTranslatesAutoresizingMaskIntoConstraints:NO];

然后是我想要的NSLayoutConstraints。但关键是我需要在添加子视图后为CustomViewController和我的CustomView内部执行此操作。看看我上面的代码,看看为什么我需要这样做。