【问题标题】:Autolayout rendering issue自动布局渲染问题
【发布时间】:2015-04-21 16:19:25
【问题描述】:

我正在从 NIB 文件创建自定义 UIView(我的视图将大小设置为 iPhone - 4.7 英寸)。我想在viewDidLoad 方法中将我的自定义视图添加到视图控制器。

在 iPhone 6 上运行时,模拟器中的一切都按预期运行。但是,如果我将设备更改为较小的屏幕(iPhone 5S 或 iPhone 4),我可以在视图在屏幕上呈现时看到动画(来自它在 NIB 文件中的大小到新的屏幕约束)。如何在没有该动画的情况下添加视图?

编辑:这里是来自视图控制器的代码,用于实例化和添加自定义视图:

- (void)createLaunchScreen {
    LaunchScreen *launchScreen = [[LaunchScreen alloc] initWithFrame:[UIScreen mainScreen].bounds];
    [self.view addSubview:launchScreen];
}

- (void)viewDidLoad {
    [super viewDidLoad];

    [self createLaunchScreen];
    ...
}

我的自定义视图中的代码:

- (instancetype)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        UIView *view = nil;
        NSArray *objects = [[NSBundle mainBundle] loadNibNamed:@"LaunchScreen"
                                                         owner:self options:nil];
        for (id object in objects) {
            if ([object isKindOfClass:[UIView class]]) {
                view = object;
                break;
            }
        }

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

- (void)layoutSubviews {
    for (UIView *view in self.subviews) {
        view.frame = self.bounds;
    }
}

这是一张我的 NIB 文件的图片

【问题讨论】:

  • 那个动画是不是换屏导致的问题?还是在代码的某个地方创建的?
  • 请出示代码。
  • 我编辑了问题并添加了代码。

标签: ios objective-c iphone interface-builder autolayout


【解决方案1】:

是因为你展示了两次吗?它会自动加载“LaunchScreen.xib”并自动显示,然后加载您的自定义视图代码,然后调整大小?

我会注释掉您的自定义视图代码,看看图像是否根本不显示(或者是否存在并且未调整大小)。如果它仍然显示(没有动画),那就是问题所在。

尝试将“启动屏幕文件”目标设置从“LaunchScreen”更改为“Main.Storyboard”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    • 2014-08-20
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多