0

アプリケーションに次のコードがあります。

// to set tip - photo in photo frame    
NSData *data = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:pathOfThumbNail]];
UIImage *cellThumbImg;

if([data length]>0){
    cellThumbImg = [UIImage imageWithData:data];
} else {
    cellThumbImg = [UIImage imageNamed:@"130X90.gif"];
}

UIImageView *imgView = [[UIImageView alloc]initWithImage:cellThumbImg];

imgView.frame = photoFrame;

[imgBg setContentMode:UIViewContentModeScaleToFill];
[cell.contentView addSubview:imgView];
//[cell.contentView sendSubviewToBack:imgView];

[imgView release];
[data release];

私は以下が欲しい:

  • 画像(nsdataを介して読み込まれる)のサイズが60 x 60であるとすると、コンテンツモードはUIVIewContentModeCenterである必要があります。
  • 画像(nsdataを介して読み込まれる)のサイズが60 x 60を超えるとすると、コンテンツモードはUIViewContentModeScaleToFillになります。

しかし、私の質問は、ロードされた画像のサイズをどのように決定できるかということNSDataです。

4

2 に答える 2

1

次の行を削除できます。これはUIImageView、初期化に使用されたイメージに従ってサイズが変更されるためです。

imgView.frame=photoFrame;

そこから、次のサイズを取ることで画像のサイズを取得できますUIImageView

CGRect image_bounds = imgView.frame;
于 2009-09-02T17:13:58.760 に答える
0

次のコードを試してみましたが、うまくいきました。

// to set tip - photo in photo frame    
NSData *data=[[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:pathOfThumbNail]];
UIImage *cellThumbImg;
if([data length]>0)
{ 
     cellThumbImg=[UIImage imageWithData:data];
} 
else 
{ 
     cellThumbImg=[UIImage imageNamed:@"130X90.gif"]; 
}
UIImageView *imgView=[[UIImageView alloc]initWithImage:cellThumbImg];
imgView.frame=photoFrame;

(cellThumbImg.size.height>60 || cellThumbImg.size.width>60 ) ? 
      [imgView setContentMode:UIViewContentModeScaleToFill] : 
      [imgView setContentMode:UIViewContentModeCenter] ;

[cell.contentView addSubview:imgView]; 
[imgView release]; [data release];
于 2009-09-02T17:19:05.973 に答える