我一直在尝试使用自适应大小类来确定要使用哪个segue(取决于当前设备),而不是在代码中使用userInterfaceIdiom。我看到这提到here,但不明白该怎么做。
答案 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。 "显示"如果存在导航控制器,我会推动,但我不认为您可以根据尺寸类别在推送和呈现模式之间进行选择 - 它们并不是真正等效的操作。