iOS自定义表格视图单元格在编辑模式下的调整大小

3

当编辑UITableView时,圆形红色按钮和删除按钮会重叠在自定义单元格上。

我们如何调整自定义单元格的大小,以留出空间给圆形红色按钮和删除按钮。


你是否正在使用UITableViewCell的子类? - jhilgert00
是的,我正在使用基于UITableViewCell的类。我添加了一些标签和图像。 - Naz
2个回答

4

使用此代码,您可以根据单元格的编辑方式和编辑阶段执行不同的任务。我已经添加了大量注释,因为我自己花了很长时间才弄明白这个过程。(有点复杂)

  - (void)willTransitionToState:(UITableViewCellStateMask)state {

        [super willTransitionToState:state];

        if (state == UITableViewCellStateDefaultMask) {

            NSLog(@"Default");
            // When the cell returns to normal (not editing)
            // Do something...

        } else if ((state & UITableViewCellStateShowingEditControlMask) && (state & UITableViewCellStateShowingDeleteConfirmationMask)) {

            NSLog(@"Edit Control + Delete Button");
            // When the cell goes from Showing-the-Edit-Control (-) to Showing-the-Edit-Control (-) AND the Delete Button [Delete]
            // !!! It's important to have this BEFORE just showing the Edit Control because the edit control applies to both cases.!!!
            // Do something...

        } else if (state & UITableViewCellStateShowingEditControlMask) {

            NSLog(@"Edit Control Only");
            // When the cell goes into edit mode and Shows-the-Edit-Control (-)
            // Do something...

        } else if (state == UITableViewCellStateShowingDeleteConfirmationMask) {

            NSLog(@"Swipe to Delete [Delete] button only");
            // When the user swipes a row to delete without using the edit button.
            // Do something...
        }
    }

你说你添加了自定义标签等内容,我之前在使用tableviews时也做过同样的事情。通常我喜欢使用动画块来“隐藏”被重叠的视图,代码如下:

[UIView animateWithDuration:0.3

                        animations:^ {
                            self.myTableCellSubview.alpha = 0.0f;
                        }
        ];

在上面的if语句中,根据状态将alpha从1.0f更改为0.0f。

至于缩进,可以在属性检查器中确保“编辑时缩进”被勾选,您也可以通过编程方式设置:

cell.shouldIndentWhileEditing = YES;

如果这样还不行,可能是你的自动调整大小出了一些问题。在你的故事板或xib中,选择需要缩进的单元格的子视图,然后转到Size inspector(标尺选项卡)。如果子视图需要从左边缩进(--->),请确保它被固定在左边: enter image description here 如果子视图需要从右边缩进(<---),请确保它被固定在右边: enter image description here 希望这可以帮到你!

非常好!我使用了这个函数和 (void)didTransitionToState:(UITableViewCellStateMask)state 以及 (void)setEditing:(BOOL)editing animated:(BOOL)animate 来完成此任务。在尺寸选项卡中我无法看到缩进工具。我不知道为什么它没有显示,我使用的是 Xcode 4.5.2。 - Naz

1

我认为您可以覆盖其中一个方法并调整自定义单元格的大小。不过,根据问题,我不确定这是否完全符合您的要求。

- (void)willTransitionToState:(UITableViewCellStateMask)state
- (void)didTransitionToState:(UITableViewCellStateMask)state

你能提供一个简短的例子来说明如何完成吗?感谢回复。 - Naz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接