如何使用自适应大小类来确定使用哪个segue?

时间:2015-04-30 07:52:27

标签: ios segue size-classes

我一直在尝试使用自适应大小类来确定要使用哪个segue(取决于当前设备),而不是在代码中使用userInterfaceIdiom。我看到这提到here,但不明白该怎么做。

2 个答案:

答案 0 :(得分:1)

我不相信没有Xcode 6.3的代码就可以做到这一点。但是,要使用自适应大小类而不是用户界面惯用语,上面的注释可以这样写:

if (self.traitCollection.horizontalSizeClass == UIUserInterfaceSizeClassCompact) {
    [self presentViewController:vc animated:YES completion:nil];
} else {
    [vc setPreferredContentSize:CGSizeMake(340, 560)];
    [vc setModalPresentationStyle:UIModalPresentationFormSheet];
    [self presentViewController:vc animated:YES completion:nil];
}

这将推动除横向iPhone 6 Plus以外的所有iPhone。

或者,如果您只想在iPad上使用模式(不是iPhone 6 Plus),您可以这样做:

if (self.traitCollection.horizontalSizeClass == UIUserInterfaceSizeClassRegular && self.traitCollection.verticalSizeClass == UIUserInterfaceSizeClassRegular) {
    [vc setPreferredContentSize:CGSizeMake(340, 560)];
    [vc setModalPresentationStyle:UIModalPresentationFormSheet];
    [self presentViewController:vc animated:YES completion:nil];
} else {
    [self presentViewController:vc animated:YES completion:nil];
}

答案 1 :(得分:0)

A"模态呈现"设置为Form Sheet的类型的segue将在iPhone上显示视图控制器全屏,并在iPad上使用Form Sheet。 "显示"如果存在导航控制器,我会推动,但我不认为您可以根据尺寸类别在推送和呈现模式之间进行选择 - 它们并不是真正等效的操作。