[iOS]UIViewContentModeScaleAspectFitの自動サイジングが上手くいかない


UIImageView* iview = [[UIImageView alloc] init];

// 720 x 960 のイメージ

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


iview.frame = CGRectMake(0,0,320,480);

iview.image = image;

iview.contentMode = UIViewContentModeScaleAspectFit;


 
 
これだと上手くいかなくて、
 
 

iview.contentMode = UIViewContentModeScaleAspectFit;

iview.image = image;


 

これだと上手くいく。なんのことはない、image 設定する前に contentMode 設定しなさいね、ってこと。。。

①でも上手く「いっちゃう」ことはある。まぁ、xcode だし、なんとなく動いちゃって後でハマることは稀によくある^^

Posted under 未分類 by akira on 金曜日 18 3月 2011 at 4:16 PM

[iOS]addView した UIView オブジェクトを後でアクセスする方法

メソッド内で宣言すると後で取得できないので、クラス内に退避用プロパティを作って・・・では面倒この上ない。

それをせずにすむ2通りの方法がある。

 


add した分だけ subviews から取得する

 

 

1
UIImageView* iview = [view.subviews objectAtIndex:0];

全部ぶん回すのは楽だが、特定のオブジェクトをアクセスしたい場合、検索まで行う必要があり面倒

 


viewWithTag を使う

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
UIImageView* iview = [[UIImageView alloc] init];
// この数値が取得時に使われる INDEX
iview.tag = 1;
[view addSubview:iview];
 
・
 
・
 
・
 
// 登録した iview を別メソッドで取得
UIImageView* iv = (UIImageView*)[view viewWithTag:1];

特定のオブジェクトを狙って取得できる。

Tag 番号は必ず 1以上 であること。 0 を使うと取得で落ちる。

番号は define や enum などで管理するといいと思う。

Posted under 未分類 by akira on 月曜日 28 2月 2011 at 10:32 PM