เนื่องจากคำถามคือสิ่งที่เทียบเท่า didRotateFromInterfaceOrientation
ฉันคิดว่าฉันมีส่วนร่วมรหัสด้านล่าง:
@implementation ViewController
- (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection {
[super traitCollectionDidChange:previousTraitCollection];
if (previousTraitCollection.verticalSizeClass == UIUserInterfaceSizeClassRegular) {
NSLog(@"User has rotated to landscape");
} else if (previousTraitCollection.verticalSizeClass == UIUserInterfaceSizeClassCompact) {
NSLog(@"User has rotated to portrait");
}
}
@end
ฉันกำลังทดสอบกับ iPhone ในเครื่องจำลอง แต่คำสั่งการพิมพ์ของฉันจะไม่ทำงานหากฉันทดสอบการใช้ iPad เนื่องจากลักษณะการเก็บรวบรวมจะไม่เปลี่ยนแปลง
มันแปลกเพราะนี่คือสิ่งที่ Apple แนะนำ :
- (void) traitCollectionDidChange: (UITraitCollection *) previousTraitCollection {
[super traitCollectionDidChange: previousTraitCollection];
if ((self.traitCollection.verticalSizeClass != previousTraitCollection.verticalSizeClass)
|| self.traitCollection.horizontalSizeClass != previousTraitCollection.horizontalSizeClass)) {
// your custom implementation here
}
}