0

xib から設定された 2 つのラベル (1 つは静的、もう 1 つは動的) を持つ長方形のビューがあります。ユーザーがビューに触れると、ビューを縮小してラベルを非表示にします ( を使用UIView) -animateWithDuration: animations:

ビューだけのコンテキストを保存して、後で戻る方法はありますか?

あることは知っていますUIGraphicsGetCurrentContextが、ドキュメントには次のように書かれています:ビュー全体であると推測しているグラフィックスコンテキストを返します。(なんて恐ろしいドキュメントでしょう!)

これは可能であり、 と共通しているようですCALayersが、これは単なるメソッドであり、実装UIViewで使用されているかどうかはわかりません。CALayers

4

2 に答える 2

2

いいえ、ビュー全体とサブビューの内容を簡単に保存して復元することはできません。UIGraphicsGetCurrentContextの写真を撮るために使用できますがUIView、サブビューの場所を保存するためには使用できません。

代わりに、サブビューごとに 2 セットのフレームを保持し、設定によってそれらを切り替えますmySubview.frame

于 2013-06-18T17:29:21.587 に答える
1

だからあなたの質問のいくつかに答えるために:

まず、UIViewそのコアは a のラッパーですCALayerCALayerビューのlayerプロパティを通じて、基になるものにアクセスできます。多くのアニメーション作業を行っている場合、ある時点でこれが非常に役立つことに気付くでしょう。iOS の意味での「グラフィックス コンテキスト」は、基本的に現在の描画状態に関する情報が保存される場所です。

UIViewアニメーション (など)を提供する便利なメソッドanimateWithDurationは、アニメーションが完了すると、ビューのフレーム、境界などを新しくアニメーション化された値に自動的に設定します。したがって、必要に応じてアニメーション化して元に戻せるように、変更する値を保持しておく必要があります。これは単なるフレームではない可能性があることに注意してください- アルファ値を変更している場合は、それらも保持する必要があります。

他にも試すことができるオプションがありますが、それには、わずかに低レベルの Core Animation API を使用することが含まれます。この既存の StackOverflow の質問には、非常に優れた要約があります: UIView animations with Autoreverse

于 2013-06-18T17:33:45.827 に答える