9

私は自分のアプリでVFR PDF ビューアー ライブラリを使用しています。

ReaderDocument *document = [ReaderDocument withDocumentFilePath:pdfFile password:nil];
ReaderViewController *vc = [[ReaderViewController alloc] initWithReaderDocument:document];
[self.navigationController pushViewController:vc animated:YES];

iOS7 で実行すると、すべて正常に動作します。

iOS8 でアプリを実行すると、ReaderViewController の willRotateToInterfaceOrientation メソッドが呼び出されないため、デバイスが回転したときにドキュメントが正しく再フォーマットされません。

ただし、ライブラリに付属のデモ アプリを iOS8 で実行すると、ReaderViewController の willRotateToInterfaceOrientation が呼び出され、ライブラリは問題ないと思い込んでしまい、自分のアプリ。

私はこの行動にかなり困惑しています。iOS8 のアプリで willRotateToInterfaceOrientation が呼び出されないのに、他のバリエーションでは呼び出されるのはなぜですか? これを追跡するにはどうすればよいですか?

4

2 に答える 2

3

単にwillRotateToInterfaceOrientationiOS8 で呼び出されなくなったため、廃止されました。

新しい回転メソッドが実装されておらず、プロジェクトが iOS 8 SDK でコンパイルされている場合、View Controller は非推奨の回転メソッドへの呼び出しを受け取りません。

あなたと同様の質問がここにあります

@mluisbrown の引用:

回転メソッドは、iOS 8 SDK で非推奨になりました。これは、iOS 7 SDK で構築されたアプリにはまったく影響しません。iOS 8 およびおそらく将来の iOS のいくつかのバージョンで実行されている場合でも同様です。

私はあなたと似たような問題に少し苦労しました。私は Apple の推奨に従って を使用しようとしviewWillTransitionToSizeましたが、私の場合は問題を解決しませんでした。

viewWillTransitionToSize:withTransitionCoordinator: インターフェイスベースの調整を行います。

アップルのドキュメントで詳しく説明されています

WWDC 2014のビデオでも説明されていますが、どのビデオだったか思い出せません。おそらく、上の 1 つWhat's new in Cocoa touchまたは上の 1 つView Controller Advancements in iOS 8です。

編集

私の場合viewWillTransitionToSize、説明したように、通常からコンパクトに変更していなかったため、厳密に言えばサイズの移行がなかったため、呼び出されなかったことに注意してください。

viewDidLayoutSubviews私が見つけた唯一の解決策は、対応するView Controllerでこれを手動で処理することでした。

私の場合、テーブルビューに表示されている一番上のセルを自動レイアウトで追跡したかったのです。システムによって自動的に追跡されなかったので、手動で確認し、回転時に適切なセルまで手動でスクロールする必要がありました. だからこそ、そのようにしました。それはかなり「重い」ですが、私の場合はうまくいきます。

誰かがもっと簡単な解決策を持っているなら、私も興味があります。

于 2014-11-10T10:10:48.837 に答える