iphone:把uiimage放在tableview部分标题中,拉伸问题

dac*_*dac 5 iphone header uitableview uiimage

嘿,我把UIImage放到我的UITableVIew的节头中.因此我使用了一些我在互联网上找到的代码:

- (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;
}
Run Code Online (Sandbox Code Playgroud)

起初,图像完全按照iPhone的完整320px宽度进行缩放.但后来我发现,我的整个UITableView的contentMode-property被设置为"UIViewContentModeScaleToFill".所以我添加了一行代码,告诉我的UIImageView不要进行缩放.在我的情况下,我将其设置为"UIViewContentModeBottom".

问题:这一切都有效,图像最终显示在280x280的预期尺寸,但我在图片周围做的边框仍然拉伸/调整到iPhone的完整宽度......?!

我无法弄清楚如何解决这个问题,因为我想要UIImage周围的边框.

感谢您对此有任何帮助..

编辑:有没有人有一些想法,这里出了什么问题?

Zap*_*pko 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];
}
Run Code Online (Sandbox Code Playgroud)

希望这会有所帮助!

更新:问题是这个方法返回的视图由tableView重新构建以填充所有标题.所以我们必须创建一个实际上是标题视图并在其上放置imageView的视图.