【问题标题】:Avoid cell autoresizing in editing mode iPhone避免在 iPhone 编辑模式下自动调整单元格大小
【发布时间】:2011-11-20 10:56:18
【问题描述】:

我的自定义单元格有问题。
我的单元格结构如下图:

灰色视图 = cell.contentView
橙色视图 = 作为子视图添加到 contentView
的按钮 黄色视图 = 作为子视图添加到 contentView
的标签 蓝色视图 = 作为子视图添加到 contentView
的图像视图 绿色视图 = 附件视图

问题是,当我将编辑切换到 tableView 时,我的单元格缩进隐藏附件视图并向右移动其他所有内容。我想避免这种情况。
当我切换编辑模式时,我的单元格不能移动它的内容,编辑控件(左边的红色按钮)必须代替 contentView 内的按钮,最后一个应该隐藏自己。

我尝试了tableView:shouldIndentWhileEditingRowAtIndexPath: 方法但没有成功,因为我的tableView 很简单。我也尝试覆盖willTransitionToState: 方法,但我不知道如何做我想做的事。

有人可以帮助我吗?
非常感谢!

【问题讨论】:

    标签: iphone uitableview editing autoresize custom-cell


    【解决方案1】:

    您是如何将子视图添加到单元格的?如果您直接将它们添加到单元格而不是将它们添加到内容视图中,它们将不会被移动。当单元格转换到编辑模式时,调整大小的是内容视图。

    如果你想隐藏某些子视图,你应该覆盖单元格子类中的setEditing:animated:,并根据需要隐藏/显示。

    您可能还需要添加子视图,使其位于视图层次结构中的 contentView 之下,或者在完成后使用 bringSubviewToFront: 方法将内容视图置于顶部。

    【讨论】:

    • 是的,我已经在 contentView 中添加了它们,因为我知道这是最好的方法……但是,我可以直接将它们添加到单元格中吗?
    • 确实可以。内容视图是“最好的方式”,因为它可以调整大小和重新排列,所以对你来说,它实际上根本不是最好的方式!
    • 好吧...效果很好,但是当我在右侧显示删除按钮时,它显示在添加到单元格的图像视图后面(上图中的蓝色视图)
    • 在答案中添加了更多内容。我认为内容视图是添加删除按钮的位置,因此您需要确保您的其他视图在此“后面”。我也注意到你在关于隐藏按钮的问题中的一点,抱歉我之前错过了。
    • 我已经覆盖了 setEditing:aminated: 方法,我的代码是这样的:cl.ly/By0I 在 layoutSubviews 方法中我将视图作为子视图添加到单元格...
    【解决方案2】:

    如果你真的不希望单元格调整大小,你可以这样实现-layoutSubviews

    -(void)layoutSubviews
    {
        if ([self isEditing] == NO) {
            // Lay out subviews normally.
        }
    }
    

    当您进入编辑模式时,-layoutSubviews 不会遵循展示您的视图的代码路径。这是假设你已经继承了 UITableViewCell。

    【讨论】:

      猜你喜欢
      • 2020-08-20
      • 1970-01-01
      • 1970-01-01
      • 2017-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-20
      相关资源
      最近更新 更多