【问题标题】:UIView added programmatically full screen wrong sizeUIView以编程方式添加全屏错误大小
【发布时间】:2016-05-22 23:49:19
【问题描述】:

在详细介绍之前,我想提一下,我已经尝试了所有关于添加 LaunchImages/LaunchScreen.xib 等的教程,但没有一个对我有用。也许我做错了什么,所以如果您认为我遗漏了什么,请告诉我。

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

但是,对于我的一个观点,我的做法有点不同,无论我在哪个模拟器上运行它,它似乎都保持在 iPhone 4S 的屏幕尺寸上。 (也就是视图周围有空白区域)

这是我的工作:

我有一个 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] bounds] 是错误的。 CustomViewController 和 CustomView 都返回相同的 incorrect 界限。为什么 ViewController 的边界不正确?为什么它总是 iPhone 4s 的界限而不是随着不同的模拟器而改变?

我在图片资源中有我的 Launch 图片:

在属性部分:

另一个问题:如果我只支持 IOS 9 及更高版本,在我看来我不需要 iOS 6 和 Prior 启动图像。但是它在某些模拟器版本上无法正常工作。但是我以为所有的iPhone 4s-6s都可以支持iOS9,为什么要这样设置呢?

【问题讨论】:

  • 出于好奇,自定义视图是 EAGLView 吗?
  • 不只是一个 CustomView : UIView
  • 是的,我已经尝试了两种方法,但似乎都不适合我
  • [UIScreen mainScreen].frame 有什么作用?

标签: ios objective-c uiview uiviewcontroller


【解决方案1】:

在尝试了 2 天不同的事情后,才弄清楚如何做到这一点。

对于阅读本文的人,甚至不必担心发布图像和所有爵士乐。只需使用 AutoLayout,它就会为您缩放视图控制器中的视图。我只需要这样做:

[查看 setTranslatesAutoresizingMaskIntoConstraints:NO];

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

【讨论】:

    猜你喜欢
    • 2013-09-06
    • 2015-06-08
    • 2019-07-25
    • 1970-01-01
    • 2013-04-08
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多