在我的应用中,UITableViewCell
大小是动态的,这意味着每个大小都有自己的高度。在每个单元格内部,UIImageView
中有一个背景图像。通过故事板,我使用autolayouts
来自定义UIImageView
以在单元格拉伸时自动拉伸。问题是,当它们伸展时,整个图像会随着角落伸展。所以我在网上查找并使用 resizableImageWithCapInsets:来扩展可拉伸的边并排除不需要的边。所以我在 tableView:cellForRowAtIndexPath:中尝试了以下代码,因为我希望图像只能垂直拉伸(高度):
[cell.backgroundImage.image resizableImageWithCapInsets:UIEdgeInsetsMake(16, 0, 16, 0)];
然而,问题仍然存在,如下图所示
如您所见,图像角仍然拉伸。我究竟做错了什么?是edgeInset值错了吗?或者我应该将代码放在其他地方吗?
答案 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;