コンポーネントの主な属性 (3/4)
作成:2011-03-28 09:07
更新:2011-03-28 09:13
更新:2011-03-28 09:13
■位置と大きさ――CGRect, CGPoint, CGRize
位置と大きさに関する属性を扱う場合には、これらの値の構造について理解しておく必要があります。位置と大きさは、「CGRect」「CGPoint」「CGSize」という3つの構造体の組汗によって構成されているからです。これらは、それぞれ以下のような役割を果たします。
CGPoint
位置を示すためのものです。「x」「y」といった要素を持っており、これらから縦横の位置の値を得ることができます。構造体の作成は、「CGPointMake」という以下のような関数を利用します(引数はそれぞれCGFloat値です)。
CGSize
大きさを示すためのものです。「width」「height」といった要素を持っています。これも構造体作成は「CGSieMake」関数を使います。(引数はやはりGCFloat値)
CGRect
領域を示すためのものです。要素として、位置を示す「origin」、大きさを示す「size」というものを持っており、これらはそれぞれCGPoint、CGSize構造体の値となっています。またCGRectは、「CGRectMake」関数を使い以下のように作成することができます(引数はCGFloat値)
コンポーネントの配置エリアは、「frame」という属性として用意されています。これは、CGRect値として設定されます。ややこしいのは、このCGRectは、CGPointとCGSizeの組合わせによって値が構成されている、ということでしょう。
したがって、frameプロパティから取り出したCGRectから細かな値を取り出すには、その中のCGPointとCGSizeから更に値を取り出す、ということをしないといけないのです。
下に、コンポーネントの表示エリアを操作する簡単なサンプルをあげておきます。UILabelとUIButtonが配置されている状態で、ボタンをクリックすると、表示されているULabelの表示エリアが少しずつ変化していきます。
ここでは、[label1 frame]でCGRect値を取得した後、CGRectMake関数で新たに設定するCGRect値を作成してからsetFrame:で設定をしています。CGRectMake関数では、取り出したCGRectから位置や大きさの値を取り出し、それに加算減算して新しい値を設定しています。
CGPoint
位置を示すためのものです。「x」「y」といった要素を持っており、これらから縦横の位置の値を得ることができます。構造体の作成は、「CGPointMake」という以下のような関数を利用します(引数はそれぞれCGFloat値です)。
CGPointMake( 横位置 , 縦位置 );
CGSize
大きさを示すためのものです。「width」「height」といった要素を持っています。これも構造体作成は「CGSieMake」関数を使います。(引数はやはりGCFloat値)
CGSizeMake( 横幅 , 縦幅 );
CGRect
領域を示すためのものです。要素として、位置を示す「origin」、大きさを示す「size」というものを持っており、これらはそれぞれCGPoint、CGSize構造体の値となっています。またCGRectは、「CGRectMake」関数を使い以下のように作成することができます(引数はCGFloat値)
CGRectMake( 横位置 , 縦位置 , 横幅 , 縦幅 );
コンポーネントの配置エリアは、「frame」という属性として用意されています。これは、CGRect値として設定されます。ややこしいのは、このCGRectは、CGPointとCGSizeの組合わせによって値が構成されている、ということでしょう。
したがって、frameプロパティから取り出したCGRectから細かな値を取り出すには、その中のCGPointとCGSizeから更に値を取り出す、ということをしないといけないのです。
下に、コンポーネントの表示エリアを操作する簡単なサンプルをあげておきます。UILabelとUIButtonが配置されている状態で、ボタンをクリックすると、表示されているULabelの表示エリアが少しずつ変化していきます。
ここでは、[label1 frame]でCGRect値を取得した後、CGRectMake関数で新たに設定するCGRect値を作成してからsetFrame:で設定をしています。CGRectMake関数では、取り出したCGRectから位置や大きさの値を取り出し、それに加算減算して新しい値を設定しています。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
※MyIAppViewController.h #import <UIKit/UIKit.h> @interface MyIAppViewController : UIViewController { UILabel * label1; UIButton * button1; } @property (nonatomic, retain) IBOutlet UILabel * label1; @property (nonatomic, retain) IBOutlet UIButton * button1; - (IBAction)button1Action:(id)sender; @end ※MyIAppViewController.m @implementation MyIAppViewController @dynamic label1; @dynamic button1; - (IBAction)button1Action:(id)sender { CGRect r = [label1 frame]; CGRect r2 = CGRectMake(r.origin.x + 10, r.origin.y + 10, r.size.width - 10, r.size.height + 10); [label1 setFrame:r2]; } ……中略…… @end
※関連コンテンツ
「初心者のためのiphone/ipadプログラミング入門」に戻る