在UITableViewCell中调整UIImageView的大小

时间:2014-01-14 07:06:09

标签: ios objective-c uiimageview

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

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

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

enter image description here

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

1 个答案:

答案 0 :(得分:0)

使用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;