2011-12-14 6 views
0

"LblA"と "LblB"という2つのUILablesを持つ.xibを持つUIViewControllerがあります。このViewController "A"を呼び出します。 LblAとLblBの境界または位置は、それぞれlblBoundsおよびlblBBoundsと呼ばれる@プロパティに依存します。 lblABoundsとlblBoundsの値が設定されていない場合、lblAとlblBは.xibのInterface Builderを使用して配置されるので、デフォルトの境界に配置されます。 lblAとlblBのlblBoundsとlblBBoundsから得られる新しい境界は、ViewDidLoad()関数で設定されます。ビューがロードされたときにUILabelsの境界をリセットするとグリッチが発生する(iOS)

"A"を読み込む別のUIViewController( "B"と呼ぶことができます)があります。最初に "A"のinitを呼び出してオブジェクトを取得します。そのオブジェクトを使用して、lblBoundsとlblBBoundsの値を設定します。そして、それを "B"のサブビューとして追加することによって、ViewConrollerをアニメーション化して読み込みます。すべてが...除いて正常に動作

グリッチ:

Bをアニメーション化し、Aを表示するように反転させます。しかし、それは裏返しされながら、垣間見るために、lblA及びLBLBがデフォルトの場所にはなくて配置されていますすぐにアニメーションが終了するとすぐにpoofがlblBoundsとlblBoundsの値で設定された位置に移動します。このグリッチの

疑い理由:lblABoundsとlblBBoundsの値から得られるlblA及びLBLBの位置として

がのviewDidLoadに設定されています。したがって、アニメーション化されている間はビューは実際にロードされておらず、ViewDidLoadは呼び出されていないので、lblAとlblBはデフォルトの位置に配置されています。ビューがアニメーションで実行され、ViewDidLoadが呼び出されるとすぐに、lblAとlblBは消えます。デフォルト位置からlblBoundsとlblBBoundsの値で設定された位置に表示されます。

私が試してみましたが、初期化にlblAとLBLBの新しい境界を設定

  • 動作しませんでした修正が()。何も起こりません:Sコードは実行されません。

...助けてください。私はうまく説明したかったと思う。

答えて

3

私はあなたの問題を正しく理解してくれることを願っています。

サブビューとして追加する前に、ビューを読み込んでみることもできます。これにより、ビューのロードメソッドが呼び出され、アニメーションが呼び出される前にラベルの位置が設定されます。ビューのためのビューコントローラをロード強制するには、私はそれが役に立てば幸い

viewController.view 

ビューのプロパティを要求する必要があります!

+0

OMG!それは修正されました!大変ありがとうございます!あなたは素晴らしいです。私はあなたにもっと多くの投票アップを与えることができればと思います。 アニメーションを開始する前にviewController.viewを呼び出した直後に修正されました。 –