2009-11-20 45 views
1

我正在编程地为宽度设置为290的表创建自定义节头。当我直接使用包含290 x 29 PNG的UIImageView时,图像显示正确。然而,我重构包含一个UILabel,所以我可以做一些自定义文本,所以我把UIImageView和UILabel放在一个UIView。当我查看这个版本时,图像比它应该窄三个像素。不需要的UIImageView在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 

回答

0

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