0

我已经对一个 tableview 单元进行了子类化,并向自定义单元添加了几个标签和图像。

   [self.contentView addSubview:lblDesc];
   [self.contentView addSubview:imagesToDisplay];

当我编辑 tableView 并按“-”符号时,删除按钮出现在图像和其他内容的顶部。

其他一些应用程序会压缩单元格的内容以容纳删除按钮。

我该怎么做?

我是否需要添加一个键值观察者 [cell addObserver: self forKeyPath: @"showingDeleteConfirmation" options: NSKeyValueObservingOptionNew context: NULL];

4

2 回答 2

4

自动调整大小很简单——把它想象成一个网页。Web 内容“流动”,它占用的空间与浏览器窗口提供的空间一样多。自动调整大小是一样的。有一些“掩码”告诉 UIKit 你希望你的内容如何适应不同的帧大小。

因此,例如,如果您希望视图从右侧缩小或扩大(例如,如果它是像表格单元格这样的左对齐内容),您可以像这样设置掩码:

cell.autoresizingMask = UIViewAutoresizingFlexibleRightMargin;

自动调整大小也像按位或运算一样工作,因此如果您希望它从右侧增长(如上)但也从底部增长,您可以将两者“或”在一起。

cell.autoresizingMask = (UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin);

如果这对您不起作用(例如,您想在屏幕上放太多,需要删除某些元素等,或者您想以某种方式与默认设置不同的动画),请考虑使用预先存在的方法在 UITableViewCell 中调用。从文档中:

- (void)willTransitionToState:(UITableViewCellStateMask)state

这将在单元格更改状态(正常->编辑或其他)之前调用,因此如果您需要做一些特殊的事情来将动画处理到编辑状态,这是您这样做的机会。文档状态:

UITableViewCell 的子类可以实现此方法,以便在更改状态时对单元格的其他更改进行动画处理。每当单元格在状态之间转换时,UITableViewCell 都会调用此方法,例如从正常状态(默认)到编辑模式。自定义单元格可以设置和定位以新状态出现的任何新视图。然后单元格会收到一个 layoutSubviews 消息 (UIView),在该消息中,它可以将这些新视图定位在新状态的最终位置。重写此方法时,子类必须始终调用 super。重写此方法。

于 2010-10-12T13:34:35.167 回答
0

您需要设置正确的autoresizingMask,以便您的按钮在contentView更改大小时正确移动。

于 2010-10-12T13:29:19.103 回答