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

Ios UIView以编程方式添加了错误大小的全屏,ios,objective-c,uiview,uiviewcontroller,Ios,Objective C,Uiview,Uiviewcontroller,在详细介绍之前,我想说的是,我已经尝试了所有关于添加LaunchImages/LaunchScreen.xib等的教程,但这些都不适用于我。也许我做错了什么,所以如果你认为我遗漏了什么,请告诉我 因此,我的大多数视图都是使用Interface Builder/Auto Layout创建的,它们可以缩放到适合所有模拟器(iPhone 4s和iPhone 6s plus)的大小 然而,对于我的一个观点,我做的有点不同,不管我在哪个模拟器上运行它,它似乎都保持在iPhone4S的屏幕大小。(即视图周围

在详细介绍之前,我想说的是,我已经尝试了所有关于添加LaunchImages/LaunchScreen.xib等的教程,但这些都不适用于我。也许我做错了什么,所以如果你认为我遗漏了什么,请告诉我

因此,我的大多数视图都是使用Interface Builder/Auto Layout创建的,它们可以缩放到适合所有模拟器(iPhone 4s和iPhone 6s plus)的大小

然而,对于我的一个观点,我做的有点不同,不管我在哪个模拟器上运行它,它似乎都保持在iPhone4S的屏幕大小。(即视图周围有空白)

我是这样做的:

我有一个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的边界不正确?为什么iphone4s总是有边界,而不是使用不同的模拟器进行更改

我在图像资产中有我的发布图像:

在属性部分:


另一个问题:如果我只支持IOS 9及以上版本,我似乎不需要IOS 6及之前的发布映像。但在某些模拟器版本上,它无法正常工作。但是我认为所有的iPhone 4s-6s都可以支持iOS9,那么为什么他们会这样设置呢?

在尝试了两天不同的东西之后,我才知道如何做到这一点

对于读过这篇文章的人来说,甚至不用担心发布图像和所有的爵士乐。只需使用AutoLayout,它将为您缩放viewcontroller中的视图。我只需要做:

[查看设置翻译自动调整大小GMaskintoConstraints:否]


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

出于好奇,自定义视图是一个EagleView吗?不,只是一个自定义视图:UIView。你看过吗?是的,我两种方法都试过了,但都不适用于我[UIScreen mainScreen]。frame提供了什么?