iOS 5.1とiOS 6.0の両方で実行する必要があるユニバーサル アプリでは、上記のコードを使用して、両方のバージョンで、iPhone と iPad の両方で回転できるようにします。2 つのバージョン間の互換性を維持しながら、非推奨の関数を使用せずに、これを行うためのより良い方法はありますか? 上記のコードを使用すると、iOS 6.0 を搭載した iPad で小さな問題が発生することがあります...
ありがとうございました。
// Override to allow orientations other than the default portrait orientation.
// Rotation for v. 5.1.1
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
// on iPad support all orientations
return YES;
}
else {
// on iPhone/iPod support all orientations except Portrait Upside Down
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
return NO;
}
// Rotation 6.0
// Tell the system It should autorotate
- (BOOL) shouldAutorotate {
return YES;
}
// Tell the system which initial orientation we want to have
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationPortrait;
}
// Tell the system what we support
-(NSUInteger)supportedInterfaceOrientations
{
// return UIInterfaceOrientationMaskLandscapeRight;
// return UIInterfaceOrientationMaskAll;
return UIInterfaceOrientationMaskAllButUpsideDown;
}
追加:いくつかのテストの後、シミュレーターでもバグが再び発生しました:slitViewControllerの左側の部分が上記のエラーで黒くなります(常にではありません)(iPadを回転させて再度実行するよりも):
<Error>: CGImageCreate: invalid image size: 0 x 0.
<Error>: CGContextSetFillColorWithColor: invalid context 0x0
<Error>: CGContextSetStrokeColorWithColor: invalid context 0x0
<Error>: CGContextGetCompositeOperation: invalid context 0x0
<Error>: CGContextSetCompositeOperation: invalid context 0x0
<Error>: CGContextFillRects: invalid context 0x0
...