在UIView中不需要的UIImageView调整大小

时间:2009-11-20 16:48:58

标签: iphone objective-c uiview uiimageview image-resizing

我正在以编程方式为宽度设置为290的表创建自定义节标题。当我使用直接包含290 x 29 PNG的UIImageView时,图像会正确显示。但是,我正在重构包含一个UILabel所以我可以做一些自定义文本,所以我将UIImageView和UILabel放在UIView中。当我查看此版本时,图像大约比应有的三个像素。

换句话说:

UIImageView * headerImg = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"subtable-header.png"]];
return headerImg; // this works correctly.  The image is "full size" at 290px wide.

然而,当我尝试这个时:

UIView * headerView = [[[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 290.0f, 29.0f)] autorelease];
UIImageView * headerImg = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"subtable-header.png"]];
[headerView addSubview:headerImg];
[headerImg release];
return headerView;  // The image is about 3 pixels narrower 

我尝试使用headerView.contentMode属性来查看是否有任何更改,但到目前为止还没有运气。

还有一点需要注意:

NSLog(@"view frame size: %1.2f %1.2f %1.2f %1.2f", headerView.frame.size.width, headerView.frame.size.height, headerView.frame.origin.x, headerView.frame.origin.y);
NSLog(@"image frame size: %1.2f %1.2f %1.2f %1.2f", headerImg.frame.size.width, headerImg.frame.size.height, headerImg.frame.origin.x, headerImg.frame.origin.y);

返回:

2009-11-20 11:35:42.323 MyApp[1350:20b] view frame size: 290.00 29.00 0.00 0.00
2009-11-20 11:35:42.323 MyApp[1350:20b] image frame size: 290.00 29.00 0.00 0.00

1 个答案:

答案 0 :(得分:0)

不是真正的解决方案,但这就是最终的工作方式。我完全摆脱了UIView并最终将UILabel作为UIImageView的子视图并返回了UIImageView。