画像を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 コメント:
コメントを投稿