如何在编辑模式下调整 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】:您可能将图像视图添加为contentView
的UITableViewCell
的子视图。您需要将图像视图设置为UITableViewCell
的backgroundView
。
backgroundView
在编辑模式下不会移动。
【讨论】:
我已经在 Interface Builder 中添加了它作为背景。我认为它是一样的以上是关于如何在编辑模式下调整 UITableViewCell 背景的大小的主要内容,如果未能解决你的问题,请参考以下文章