CALayer、隠しアニメーション、どうやってデフォルトの隠しアニメーション効果をオフにしますか?
2750 ワード
RedRainの:http://www.jianshu.com/users/29e03e6ff407/latest_アートレス
CALayer iOSでは、タッチできるものは基本的にUID Viewであり、ボタン一つ、テキストラベル一つ、テキスト入力ボックス一つ、アイコン一つなど、UID View である.実はUID Viewがスクリーンに表示できるのは、その内部の一つのレイヤー のためです.は、UID Viewオブジェクトを作成すると、UID View内部に自動的にレイヤー(すなわち、CALayerオブジェクト)を作成し、UID Viewのlayer属性を介して、このレイヤ にアクセスすることができます. UID Viewが画面に表示する必要があるときは、ドラフトRect:メソッドを呼び出して描画し、すべてのコンテンツを自分のレイヤーに描画し、描画が完了すると、システムはレイヤーを画面にコピーしてUID Viewの表示を完了します. 言い換えれば、UIView自体は表示機能を備えておらず、その内部の層のみが表示機能 を有しているということです.
CALayerの基本使用 CALayerオブジェクトを操作することにより、UID Viewのいくつかの外観属性を簡単に調整することができます.例えば、 シャドウ 円角の大きさ フレーム幅と色 は、レイヤーにアニメーションを追加して、よりクールな効果を実現することもできます.
CALayerの属性 まず です. CALayerはQuartzCoreフレームワークに定義されている である. CGImageRef、CGColorRefの2種類のデータタイプは、CoreGraphicsフレーム内に定義されている である. UICColor、UImageはUICKフレームワークに定義されている である.、次に です. QuartzCoreフレームとCoreGraphicsフレームは、プラットフォームをまたいで使用できます.iOSとMac OS Xでは、 が使用できます.ですが、UICKtはiOSでしか を使用できません.移植可能性を保証するために、QuartzCoreはUImage、UICColorを使用できません.CGImageRef、CGColorRef しか使用できません.
UID ViewとCALayerの選択は、CALayerを通じて、UImageViewと同じインタフェース効果を作り出します. CALayerとUID Viewは同じ表示効果を実現できるなら、一体誰を選ぶべきですか? 実は、CALayerとUID Viewを比べて一つのイベント処理の機能が多くなりました.つまり、CALayerはユーザのタッチイベントを処理できません.UID Viewは です.ですので、表示されたものがユーザーと対話する必要があるなら、UID Viewを使います.ユーザーとの対話が必要でないなら、UID ViewまたはCALayerを使ってもいいです. もちろん、CALayerの性能は少し高くなります.事件処理の機能が足りないので、もっと軽量 です.
隠しアニメーション UID Viewの内部はデフォルトでCALayerに関連しています.このLayerをRoot Layerと呼ぶことができます. のすべての非Root Layer、つまり手動で作成されたCALayerオブジェクトには、隠蔽アニメーション が存在します.隠アニメとは? Root Layer以外の部分的属性を修正すると、デフォルトでは自動的にいくつかのアニメーション効果が発生します. で、これらの属性はAnimable Proptiesと呼ばれています. いくつかのよくあるAnimable Proptiesを列挙します. bounds:CALayerの幅と高さを設定するために使用されます.この属性を変更すると拡大縮小動画が生成されます. background Color:CALayerの背景色を設定するために使用されます.この属性を変更すると背景色のグラデーションが発生します. position:CALayerの位置を設定するために使用されます.この属性を変更すると並進アニメーションが発生します. は、アニメーション事務によってデフォルトの暗黙的アニメーション効果 をオフにすることができます.
CALayer
CALayerの基本使用
CALayerの属性
@property CGRect bounds;
( , anchorPoint )
@property CGPoint position;
(x,y 0-1), position
@property CGPoint anchorPoint;
(CGColorRef )
@property CGColorRef backgroundColor;
@property CATransform3D transform;
(CGColorRef )
@property CGColorRef borderColor;
@property CGFloat borderWidth;
@property CGColorRef borderColor;
( CGImageRef)
@property(retain) id contents;
CALayerに関する疑惑UID ViewとCALayerの選択
隠しアニメーション
[CATransaction begin];
[CATransaction setDisableActions:YES];
self.myview.layer.position = CGPointMake(10, 10);
[CATransaction commit];