4

私が解決しようとしている問題はこれです:

UIImagePickerを使用する場合、デバイスが回転すると自動的に調整されます。私はそれがこれをすることを望まない、むしろそれは常に縦向きにとどまるべきである。私はたくさんグーグルで検索しましたが、解決策は見つかりませんでした(同じ未解決の問題を抱えている他の人だけ)。唯一の答えは、プライベートAPI呼び出しを使用することでした。私は、これを行うリスクを冒したくありません。

-

しかし、私は「メソッドのスウィズリング」に出くわしました。これは、実行時にメソッド名を交換する方法です。私がやろうとしていること:

  • 回転を許可しないカスタム動作を定義する「customShouldRotate」などのメソッドを定義するカテゴリをUIViewControllerに追加します。

  • 実行時にUIViewControllerのデフォルトの回転メソッドを使用してこれらのメソッドをスウィズルします。

-

少し考えてみると、それほど単純ではないかもしれません。理由は次のとおりです。次のような回答をいただければ幸いです。

  • 私がスウィズリングしているメソッドは、UIImagePickerControllerではなくUIViewControllerにあります。画像ピッカーを直接スウィズルすることはできません。すでにサブクラス化を試しましたが、UIImagePickerController自体ではなく、回転を処理するサブビューのコントローラーのようです。スウィズルされたメソッドはサブクラスに渡されますか?そうでない場合、これを行うための回避策はありますか?

  • UIImagePickerControllerで使用されているUIViewControllerの通常のローテーションメソッドではない可能性があります。伝える方法はありますか?

  • Appleはメソッドのスウィズリングで大丈夫ですか?私はプライベートAPI呼び出しを使用していませんが、それでも、彼らがとにかくそれを拒否したとしても、私はそれほど驚かないでしょう。

-

このアイデア全体が実行可能/試す価値がありますか?または、誰かが実際に元の問題を別の方法で解決した場合、それはさらに良いでしょう。

4

1 に答える 1

0

メソッドのスウィズリングは問題ありません。Appleは静的アナライザーを使用してプライベートAPIをチェックします。プライベートAPIを呼び出さずに、オーバーロード、スウィズル、または同じ効果を達成するために実行できることを実行できる場合、アナライザーはそれを取得しません。

Appleあなたを拒否する唯一の理由は、「標準的な」動作を変更するためですが、これは起こらないと思います。最悪のことは、アプリがキックバックされ、元の動作を復元する必要があることです。

于 2011-03-21T08:33:51.890 に答える