質問

スタックオーバーフローに初めて投稿します。

私は多くのGoogle検索に合わせて何時間も洗い流してきましたが、この時点で、UIVIEWとUIVIEWCONTROLLERクラスのリファレンスドキュメントを実際に記憶しています。私が何をしても、私のアプリは、オリエンテーションの変化に関する私の見解(またはその他のその他のフレームサイズの変更)を変更するための私の努力を無視しています。

関与するペン先やXIBはありません。私はプログラムですべてのビューとビューコントローラーを構築しており、それら(ViewControllers)はすべて、私が作成した3つのカスタムUIViewControllerサブクラスのいずれかのサブクラスです。これらのスーパークラスには、LoadViewに次の行があります:メソッド...

[self setView:[[[UIView alloc] initWithFrame:[self viewFrame]] autorelease]];
[[self view] setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];
[[self view] setAutoresizesSubviews:TRUE];

適切なセッターメソッドのすべて(言い換えれば、サブビューを追加する場所)では、自動化マスクを適用する手順を繰り返しています。私が何をしても、結果は常に同じです。[ビルド]をクリックし、[デバッグ]をクリックし、アプリが起動するのを待ち、デバイスを回転させ、Presto!ビューは回転しますが、まったくサイズ変更しません。

ここに何が欠けていますか?おそらく私が見ていないことは明らかです。事前に感謝します。

役に立ちましたか?

解決

さて、確かに、それは私自身のせいでした。

レッスンナンバーワン: 壊れたコードを修正しようとして一晩中起き続けることで、あなたは自分自身に好意を与えていません。少し休む!もっと水を飲む!脳に複雑なアルゴリズム戦略を実行させ、ベッドタイムを過ぎてロジックを強制し続けようとする場合にのみ、おそらく事態を悪化させるでしょう。

私は、自動化プロパティセットをまったく持っていないビュー階層の底に向かって不正なuiviewを持っていました。私はすべてを調べたと思っていましたが、それを逃したことがわかりました。 (ちょっとした景色と一日のショット!)

後で同様の欲求不満でやって来た人なら誰でも言うことができます。 Autoresizing 実際、文書化されているように機能します。 「何かが呼ばれていない」と思うなら、おそらく間違った場所を見ているでしょう。また、 UIViewAutoresizingMask 列挙定数は、インターフェイスビルダーにあるのとまったく同じように使用されません。 IBでは、マージンを「ロック」しますが、プログラムで設定すると、ロックされたマージンがデフォルトで想定され、「柔軟な」と設定することで「ロックを解除」します。したがって、たとえば、FlexibleWidthとFlexibleheightビットのみを設定することは、IBのすべての自己紹介オプションを有効にすることと同等です。マージンマスクのいずれかを投げることによって(すなわち UIViewAutoresizingFlexibleLeftMargin)IBの対応するマージン自動化オプションを「選択」しています。 (これが一部の人々にとって大きな混乱のポイントであると思われる場所の周りに他の多くの投稿が浮かんでいるのを見てきました。)

しかし、私の調査中、私は、自動的かどうかにかかわらず、UIViewがサイズ変更されたときに、いかなる種類のイベント、メッセージ、通知、またはその他の方法がないように見えることに気付きました。サブビューのサイズを変更するためには必要ありませんが、フレームサイズが変化した場合にScrollViewまたはTableViewにスクロールしたい状況でそれが起こっていることを知っておくといいでしょう。キーボードがポップアップするときに簡単にこれを行うことができることは知っています。 TextField delegate 方法。だから多分別の投稿のトピック...

とにかく、StackoverFlowに参加してくれたすべての人に感謝します!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top