如何在编辑模式下调整 UITableViewCell 背景的大小

Posted

技术标签:

【中文标题】如何在编辑模式下调整 UITableViewCell 背景的大小【英文标题】:How to resize UITableViewCell Background in editing mode 【发布时间】:2010-03-11 00:24:13 【问题描述】:

我有一个带有每个单元格的自定义图像背景的表格视图。在正常模式下,背景是完美的并填满了所有单元格。当 tableView 进入编辑模式时,“-”按钮出现在左侧,所有对象都缩进,在左侧我有背景问题:有一个白色区域。谁能帮我?背景图像足够大,可以填满所有单元格,但它在编辑模式下移动。我能解决吗?非常感谢!

更新:

我在 UITableViewCell 子类中使用了这段代码:

- (void) layoutSubviews


     UIImage *backgroundImage = [UIImage imageNamed:@"sfondoCella2.png"];
     UIImageView *bgView = [[UIImageView alloc] initWithFrame:self.bounds];
     bgView.image = backgroundImage;
     self.backgroundView = bgView;
     [bgView release];


设置背景并在正常模式下正常工作,但是当您进入编辑模式时,一切都会出错:没有出现圆形红色删除按钮,并且单元格的缩进(与 IB 中设置的背景完美)不正确。

【问题讨论】:

可以添加设置背景图片的代码吗? 【参考方案1】:

我认为没有办法通过IB添加背景图片。相反,我假设您只是添加一个 UIImage 子视图。

我已经在代码中的表格单元格中添加了背景图片,我没有遇到您描述的问题。

UIImage *backgroundImage = [UIImage imageNamed:@"my-bg.png"];
UIImageView *bgView = [[UIImageView alloc] initWithFrame:self.backgroundView.frame];
bgView.image = backgroundImage;
cell.backgroundView = bgView;
[bgView release];

理想情况下,您可以在自定义 UITableViewCell 的 layoutSubviews 方法中执行此操作,然后告诉 IB 那是您的单元格的类。

通过扩展 UITableViewCell,您可以覆盖以下方法,并准确控制单元格在编辑模式或选中时的外观。

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
- (void)setEditing:(BOOL)editing animated:(BOOL)animated

【讨论】:

问题是当我选择单元格时我想要有 2 个不同的背景。在 IB 中,如果您设置背景和选定背景属性,您可以在点击单元格时更改背景。使用您的方法,当您点击单元格时,选定的背景图像不起作用 实际上,如果您实现自己的 UITableViewCell,您可以覆盖 setHighlighted 和/或 setEditing。【参考方案2】:

您可能将图像视图添加为contentViewUITableViewCell 的子视图。您需要将图像视图设置为UITableViewCellbackgroundView

backgroundView 在编辑模式下不会移动。

【讨论】:

我已经在 Interface Builder 中添加了它作为背景。我认为它是一样的

以上是关于如何在编辑模式下调整 UITableViewCell 背景的大小的主要内容,如果未能解决你的问题,请参考以下文章

如何在编辑模式下确定 UITableViewCell 的删除按钮的原点 (x,y)?

使用自动布局进行编辑时在表格视图中调整子视图的大小

嵌套 UIView 调整大小

iPad添加视图然后告诉它根据方向模式调整大小?

如何访问 NSIndexPath 部分值?

如何在 org 模式下调整图像大小