UITableview Cell上的删除按钮会阻止自定义单元格图像

时间:2010-10-12 13:21:47

标签: iphone sdk uitableview delete-row

我已将子视图单元格子类化,并向自定义单元格添加了几个标签和图像。

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

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

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

我该怎么做?

我是否需要添加键值Observer        [cell addObserver:self forKeyPath:@“showingDeleteConfirmation”           options:NSKeyValueObservingOptionNew context:NULL];

2 个答案:

答案 0 :(得分:4)

自动化很简单 - 把它想象成一个网页。 Web内容“流动”,它占用了浏览器窗口提供的空间。自动化是一样的。有“面具”告诉UIKit你希望你的内容如何调整到不同的帧大小。

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

cell.autoresizingMask = UIViewAutoresizingFlexibleRightMargin;

自动调整也像按位运算一样工作,所以如果你想让它从右边(如上所述)增长,但也从底部增长,你就可以将两者“或”在一起。

cell.autoresizingMask = (UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin);

如果这对您不起作用(例如,您想在屏幕上放置太多,并且需要删除某些元素等,或者您想以某种方式设置不同于默认设置的动画),请考虑使用前在UITableViewCell中存在的方法调用。来自documentation

- (void)willTransitionToState:(UITableViewCellStateMask)state

这将在单元格更改状态(正常 - >编辑或其他)之前调用,因此如果您需要执行任何特殊操作来处理动画到编辑状态,这是您的机会。文档声明:

  

UITableViewCell的子类可以   实现此方法来设置动画   对它进行额外的更改   正在改变状态。的UITableViewCell   每当一个单元格调用此方法   国家之间的转换,例如   从正常状态(默认)到   编辑模式。自定义单元格可以设置   向上并定位任何新观点   与新状态一起出现。细胞   然后收到layoutSubviews消息   (UIView)它可以定位   这些新观点在他们的决赛中   新州的位置。   子类必须始终调用super   重写此方法。覆盖此方法。

答案 1 :(得分:0)

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