- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
self.imageViewForImage.image = [helperClass resizeImage:[self.offerItem objectForKey: @"picture"] forSize:CGSizeMake(280.0, 280.0) ];
[self.imageViewForImage.layer setBorderColor: [[UIColor blackColor] CGColor]];
[self.imageViewForImage.layer setBorderWidth: 1.2];
self.imageViewForImage.contentMode = UIViewContentModeBottom;
return self.imageViewForImage;}
-(CGFloat)tableView:(UITableView*)tableView heightForHeaderInSection:(NSInteger)section
{
if(section == 0)
return 320;
return 1.0;
}
首先,图像完全按照iPhone的完整320px宽度进行缩放。但后来我发现,我的整个UITableView的contentMode-property被设置为“UIViewContentModeScaleToFill”。所以我添加了一行代码,告诉我的UIImageView不要进行缩放。在我的情况下,我将其设置为“UIViewContentModeBottom”。
问题:这一切都有效,图像最终以280x280的预期尺寸显示,但我在图片周围做的边框仍然被拉伸/调整到iphone的整个宽度......?!
我无法弄清楚如何解决这个问题,因为我想要UIImage周围的边框..
感谢您提供任何帮助..
编辑:有没有人有想法,这里出了什么问题?
答案 0 :(得分:9)
您的UIImageView有一个图层,其中包含您为图像设置的内容。图层的大小等于imageView的大小,但图像的大小小于它。因此,当您将contentMode设置为视图时,如果内容大小小于图层大小,则会向其显示在底层绘制图层内容的图层。因此,即使您已调整其内容图像的大小,图层的大小(以及其帧的大小)仍然相同。
问题在于,当您应该调整UIImageView的大小时,您正在尝试调整图像大小。这部分代码看起来像这样:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView *headerView = [[UIView alloc] init];
self.imageViewForImage.frame = CGRectMake(20, 20, 280, 280);
self.imageViewForImage.image = [self.offerItem objectForKey:@"picture"];
self.imageViewForImage.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;
[self.imageViewForImage.layer setBorderColor: [[UIColor blackColor] CGColor]];
[self.imageViewForImage.layer setBorderWidth: 1.2];
[headerView addSubview:self.imageViewForImage];
return [headerView autorelease];
}
希望这会有所帮助!
更新:问题是此方法返回的视图由tableView重新构建以填充所有标头。因此,我们必须创建一个实际上是标题视图的视图,并在其上放置一个imageView。