Разделите альбомную и альбомную ориентацию в iOS8 с помощью Objective C
У меня есть отдельные альбомные и портретные представления в iOS7, используя код ниже:
-(void)didRotateFromInterfaceOrientation: (UIInterfaceOrientation)fromInterfaceOrientation {
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_7_1) {
CGRect currentBounds=self.view.bounds;
if (iPadInt==0) {
if (self.interfaceOrientation==UIInterfaceOrientationLandscapeRight) {
self.view=self.landscapeQuestionView;
self.view.transform=CGAffineTransformMakeRotation((kDeg2Rad)*(90));
} else if (self.interfaceOrientation==UIInterfaceOrientationLandscapeLeft) {
self.view=self.landscapeQuestionView;
self.view.transform=CGAffineTransformMakeRotation((kDeg2Rad)*(-90));
} else if (self.interfaceOrientation==UIInterfaceOrientationPortrait) {
self.view=self.portraitQuestionView;
self.view.transform=CGAffineTransformMakeRotation(0);
} else if (self.interfaceOrientation==UIInterfaceOrientationPortraitUpsideDown) {
self.view=self.portraitQuestionView;
self.view.transform=CGAffineTransformMakeRotation((kDeg2Rad)*(180));
} self.view.bounds=currentBounds;
} else if (iPadInt==1) {
if (self.interfaceOrientation==UIInterfaceOrientationLandscapeRight) {
self.view=self.iPadLandscapeQuestionView;
self.view.transform=CGAffineTransformMakeRotation((kDeg2Rad)*(90));
rotationInt=90;
} else if (self.interfaceOrientation==UIInterfaceOrientationLandscapeLeft) {
self.view=self.iPadLandscapeQuestionView;
self.view.transform=CGAffineTransformMakeRotation((kDeg2Rad)*(-90));
rotationInt=90;
} else if (self.interfaceOrientation==UIInterfaceOrientationPortrait) {
self.view=self.iPadPortraitQuestionView;
self.view.transform=CGAffineTransformMakeRotation(0);
rotationInt=0;
} else if (self.interfaceOrientation==UIInterfaceOrientationPortraitUpsideDown) {
self.view=self.iPadPortraitQuestionView;
self.view.transform=CGAffineTransformMakeRotation((kDeg2Rad)*(180));
rotationInt=0;
} self.view.bounds=currentBounds;
}
}
Я знаю, что должен использовать метод viewWillTransitionToSize в iOS8, но я не могу понять, как получить эти различные представления в этом методе. Заранее благодарю за любую помощь.
1 ответ
Здесь есть тема: методы ротации устарели, эквивалент "didRotateFromInterfaceOrientation"?
Я думаю, что в вашей ситуации вы можете использовать viewWillTransitionToSize: вот так:
-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
[coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context)
{
//get orientation
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
//check orientation
if (orientation==UIInterfaceOrientationPortrait)
{
NSLog(@"portrait");
}
else if(orientation==UIInterfaceOrientationPortraitUpsideDown)
{
NSLog(@"upside-down");
}
else if(orientation==UIInterfaceOrientationLandscapeRight)
{
NSLog(@"landscape right");
}
else if(orientation==UIInterfaceOrientationLandscapeLeft)
{
NSLog(@"landscape left");
}
} completion:^(id<UIViewControllerTransitionCoordinatorContext> context)
{
}];
}