Apple Developer Connection
Member Login Log In | Not a Member? Contact ADC

< 前ページ次ページ > 目次を隠す

キー値コーディングへのCore Animationの拡張

CAAnimationクラスとCALayerクラスは、NSKeyValueCodingプロトコルを拡張して、キーのデフォルト値、拡張したラッピング規則、およびキーパスのサポートをCGPointCGRectCGSize、およびCATransform3Dに対して追加します。

目次:

キー値コーディング準拠のコンテナクラス
デフォルト値のサポート
ラッピング規則
構造体フィールドのためのキーパスサポート


キー値コーディング準拠のコンテナクラス

CALayerCAAnimationはどちらもキー値コーディング準拠のコンテナクラスです。任意のキーに値を設定し、アーカイブできます。

キー「foo」はCALayerクラスの宣言されたプロパティではありませんが、キー「foo」に次のように値を設定できます。

[theLayer setValue:[NSNumber numberWithInteger:50] forKey:@"foo"];
 

キー「foo」の値は、次のコードを使用して取得します。

fooValue=[theLayer valueForKey:@"foo"];

デフォルト値のサポート

Core Animationでは、キー値コーディングに新しい規則を追加しており、これによりクラスは、対象となるキーに値が設定されていない場合にデフォルト値を提供できます。CALayerCAAnimationはどちらも、クラスメソッドdefaultValueForKey:を使ってこの規則をサポートします。

あるキーにデフォルト値を指定するには、クラスのサブクラスを作成してdefaultValueForKey:をオーバライドします。サブクラスの実装がそのキーパラメータを調べて適切なデフォルト値を返します。リスト 1に、レイヤプロパティmasksToBoundsに新しいデフォルト値を指定するdefaultValueForKey:の実装例を示します。

リスト 1  defaultValueForKey:の実装例

 
+ (id)defaultValueForKey:(NSString *)key
{
    if ([key isEqualToString:@"masksToBounds"])
         return [NSNumber numberWithBool:YES];
 
    return [super defaultValueForKey:key];
}

ラッピング規則

キー値コーディングメソッドを使って、標準のキー値コーディングのラッピング規則でサポートされるオブジェクト以外の値を持つプロパティにアクセスする場合は、次のラッピング規則を使用します。

Cの型

クラス

CGPoint

NSValue

CGSize

NSValue

CGRect

NSValue

CGAffineTransform

NSAffineTransform

CATransform3D

NSValue

構造体フィールドのためのキーパスサポート

CAAnimationは、キーパスを使って選択した構造体のフィールドにアクセスするためのサポートを提供しています。これは、これらの構造体フィールドをアニメーションのキーパスとして指定したり、setValue:forKeyPath:valueForKeyPath:を使って値の設定と取得を行う場合に役立ちます。

CATransform3Dは次のフィールドを公開します。

構造体フィールド

説明

rotation.x

ラジアン単位によるX軸での回転。

rotation.y

ラジアン単位によるY軸での回転。

rotation.z

ラジアン単位によるZ軸での回転。

rotation

ラジアン単位によるZ軸での回転。これはrotation.zフィールドを設定することと同じです。

scale.x

X軸の拡大縮小倍率。

scale.y

Y軸の拡大縮小倍率。

scale.z

Z軸の拡大縮小倍率。

scale

3つの拡大縮小倍率すべての平均。

translation.x

X軸での平行移動。

translation.y

Y軸での平行移動。

translation.z

Z軸での平行移動。

translation

XおよびY軸での平行移動。値はNSSizeまたはCGSizeです。

CGPointは次のフィールドを公開します。

構造体フィールド

説明

x

点のX成分。

y

点のY成分。

CGSizeは次のフィールドを公開します。

構造体フィールド

説明

width

サイズの幅の成分。

height

サイズの高さの成分。

CGRectは次のフィールドを公開します。

構造体フィールド

説明

origin

矩形の原点をCGPointとして指定します。

origin.x

矩形の原点のX成分。

origin.y

矩形の原点のY成分。

size

矩形サイズをCGSizeとして指定します。

size.width

矩形サイズの幅の成分。

size.height

矩形サイズの高さの成分。

構造体フィールドのキーパスをObjective-C 2.0プロパティを使用して指定することはできません。次のような指定はできません。

myLayer.transform.rotation.x=0;

代わりに、次に示すようにsetValue:forKeyPath:またはvalueForKeyPath:を使う必要があります。

    [myLayer setValue:[NSNumber numberWithInt:0] forKeyPath:@"transform.rotation.x"];


< 前ページ次ページ > 目次を隠す


Last updated: 2007-12-06




Did this document help you?
Yes: Tell us what works for you.

It’s good, but: Report typos, inaccuracies, and so forth.

It wasn’t helpful: Tell us what would have helped.
Get information on Apple products.
Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Copyright © 2007 Apple Inc.
All rights reserved. | Terms of use | Privacy Notice