在UITableViewCell中调整UIImageView的大小

在我的应用程序中, UITableViewCell大小是动态的,这意味着每个都有自己的高度。 在每个单元格内部, UIImageView有一个背景图像。 通过故事板,我使用自动autolayouts来自定义UIImageView以便在细胞伸展时自动伸展。 问题是,当它们伸展时,整个图像会随着角落伸展。 所以我在网上查找并使用resizableImageWithCapInsets:为了拉伸可拉伸的边并排除不需要的边。 所以我在tableView中尝试了以下代码:cellForRowAtIndexPath:因为我希望图像只能垂直拉伸(高度):

 [cell.backgroundImage.image resizableImageWithCapInsets:UIEdgeInsetsMake(16, 0, 16, 0)]; 

然而,问题仍然存在,如下图所示

在此处输入图像描述

如您所见,图像角仍然是拉伸的。 我究竟做错了什么? 是edgeInset值错了吗? 或者我应该将代码放在其他地方?

您可以使用UIEdgeInsetsMake()函数创建UIEdgeInsets值。 UIEdgeInsets分别为top, bottom, left, and right的插入值封装了四个不同的CGFloat值。 正插入值会缩小内容区域,而负插入值则会有效地增加内容区域。 确保首先创建图像并在其中应用插图,然后,完成后,将图像应用于backgroundView,而不是尝试从backgroundView.image属性编辑边缘插入。

  UIImageView *cellBGIV = [[UIImageView alloc] initWithImage:[[UIImage imageNamed:@"imageName"] resizableImageWithCapInsets:UIEdgeInsetsMake(5.0, 5.0, 5.0, 5.0)]]; cell.backgroundView = cellBGIV;