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 回答