Autolayout呈现问题

时间:2015-04-21 16:19:25

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

我正在从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文件外观的图片 enter image description here

1 个答案:

答案 0 :(得分:0)

是因为你两次出现吗?它会自动加载" LaunchScreen.xib"自动显示然后加载自定义视图代码然后调整大小?

我会注释掉你的自定义视图代码,看看图像是否完全没有显示(或者是否存在且没有调整大小)。如果它仍然显示(没有动画)那么问题就在于此。

尝试更改您的"启动屏幕文件"目标设置来自" LaunchScreen"到" Main.Storyboard"