2009/07/28

[Objective-C][iPhone sdk]imageの位置指定して表示

画像をUIImageViewを使って表示するのですが、表示位置が変更できないのかと思い、色々試したあげく結構、苦戦してしまったので、やりかたをまとめてみたいと思います。

まず最初に、思いついたのは、UIImageクラスのdrawAtPointメソッドを使って、画像の表示位置を変更する方法

UIView *contentView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];

UIImage *image = [UIImage imageNamed:@"hoge.jpg"];
[image drawAtPoint:CGPointMake(50,100)];

ImageView *imageView = [[UIImageView alloc] initWithImage:image];
[contentView addSubview:imageView];

[window addSubview:contentView];
[window makeKeyAndVisible];

これを実行してみたところ、画像の位置は変更されませんでした。

リファレンスを参照したところ、確かに、drawAtPointメソッドは、引数の位置で表示すると書かれていたのに。。。

次に下の方法で試してみる。

UIView *contentView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];

UIImage *image = [UIImage imageNamed:@"hoge.jpg"];

ImageView *imageView = [[UIImageView alloc] initWithImage:image];
[imageView.image drawAtPoint:CGPointMake(50,100)];
[contentView addSubview:imageView];

[window addSubview:contentView];
[window makeKeyAndVisible];

上との違いは、imageプロパティを経由して、drawAtPointを使っているところ。
でも、やはりこれも表示されず。。。

そこでgoogle先生に聞いてみたところ、同じような事例が
UIViewに座標を指定してImageを表示する。

【iPhone】UIImageとUIView
にありました。

参考にしながら、ソースに変更を加えていくと、最終的に下のソースで位置を変更することができました。
UIView *contentView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];

UIImage *image = [UIImage imageNamed:@"hoge.jpg"];
ImageView *imageView = [[UIImageView alloc] initWithImage:image];
imageView.frame = CGRectMake(20, 100, image.size.width,image.size.height);

[contentView addSubview:imageView];

[window addSubview:contentView];
[window makeKeyAndVisible];

ここで問題なのが、drawAtPointメソッドを使わなくても、CGRectMakeファンクションで設定ができてしまうところ。

このやり方は、もともとわかっていたのですが、肝心の表示領域(位置ではなく)にあたる、第三引数と第四引数の設定がすぐに思いつかなくて、時間がかかってしまいました。

ようは、自分自身の横幅と高さを表示領域にしますよーと設定することによって、100%(1倍)の大きさに表示されるということ。

最初、これが閃いたときは、「ニヤリ」としてしまいました。

今は、iPod touch(iPhone)を触った時に、画像が動的に変更されるようにする方法について、試行錯誤中です。

0 コメント:

コメントを投稿