如何使用自适应大小 类 来确定使用哪个 segue?
How use adaptive size classes to determine which segue to use?
我一直在尝试使用自适应大小 类 而不是在代码中使用 userInterfaceIdiom 来确定要使用哪个 segue(取决于当前设备)。我看到这个提到 here 但不明白该怎么做。
类型设置为表单 Sheet 的 "Present Modally" segue 将在 iPhone 上全屏显示视图控制器,并在 [=] 上使用表单 Sheet 14=]。如果存在导航控制器,"Show" 将推送,但我认为您不能根据大小 类 在推送和模态呈现之间进行选择 - 它们并不是真正等效的操作。
从 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];
}
我一直在尝试使用自适应大小 类 而不是在代码中使用 userInterfaceIdiom 来确定要使用哪个 segue(取决于当前设备)。我看到这个提到 here 但不明白该怎么做。
类型设置为表单 Sheet 的 "Present Modally" segue 将在 iPhone 上全屏显示视图控制器,并在 [=] 上使用表单 Sheet 14=]。如果存在导航控制器,"Show" 将推送,但我认为您不能根据大小 类 在推送和模态呈现之间进行选择 - 它们并不是真正等效的操作。
从 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];
}