2010-10-12 176 views
0

我已经子类化了一个tableview单元格并将一些标签和图像添加到自定义单元格中。在UITableview上删除按钮单元格块定制单元格图像

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

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

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

我该如何去做这个?

我是否需要添加一个键值观察 [电池的addObserver:自forKeyPath:@ “showingDeleteConfirmation” 选项:NSKeyValueObservingOptionNew方面:NULL];

回答

4

自动调整很简单 - 想象它就像一个网页。网页内容“流动”,它占用了浏览器窗口给它的空间。 Autoresizing是一样的。有“口罩”告诉UIKit你的内容如何适应不同的帧大小。例如,如果您希望视图从右侧缩小或增长(例如,如果它是左对齐的内容,如表格单元格),则可以像这样设置遮罩:

cell.autoresizingMask = UIViewAutoresizingFlexibleRightMargin; 

也自动调整大小就像一个按位或运算,所以如果你想让它从右边长(如上所述),而且还从底部,你会“或”两个共同成长。

cell.autoresizingMask = (UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin); 

在,这并不为你工作的情况下(例如,你希望把太多的屏幕上,并且需要删除某些元素等,或要动画比默认不知何故不同)考虑在UITableViewCell中使用预先存在的方法调用。从documentation

- (void)willTransitionToState:(UITableViewCellStateMask)state 

这将被称为细胞改变状态前右(正>编辑或其他),所以如果你需要做任何特殊处理动画编辑状态,这是你这样做的机会。的文档状态:

的UITableViewCell的

子类可以 实现此方法,以动画时,它 正在改变状态的单元附加 变化。每当单元格 在状态之间转换时,如 从正常状态(默认)到 编辑模式,UITableViewCell 都会调用此方法。自定义单元格可以设置为 并定位 以新状态显示的任何新视图。然后,单元格 接收layoutSubviews消息 (UIView),其中它可以将这些新视图定位在它们在新状态的最终 位置中的 。 当覆盖此方法时,子类必须始终调用超类。覆盖此方法。

+0

好,所以这需要我做“脏”的工作。我不想用这个,因为我有7种不同类型的细胞,所以我不得不做很多定制。但如果一切都失败了,我会再看看它。但是,如果你能够对autoresizingMask“途径”进行一些阐述,那将会很好。它不适合我。 – 2010-10-12 13:47:29

+0

我添加了更多关于自动调整的信息。另外,请尝试查看Apple的AdvancedTableCells示例代码 - http://developer.apple.com/library/ios/samplecode/AdvancedTableViewCells/Introduction/Intro.html#//apple_ref/doc/uid/DTS40009111 – makdad 2010-10-13 08:36:00

+0

嘿谢谢autoresizing的东西,我想我需要使用你的第一个解决方案本身,很多杂乱的表格单元格。 – 2010-10-13 11:28:29

0

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

+0

没有。我在我的自定义实现中添加了这个,并且在tableview委托方法中也添加了这个。但力量有所作为。 – 2010-10-12 13:44:21

+0

确定了这个工作,我需要设置标签和图像的autoresizingMask。但是他们现在标签和图像重叠。尝试了各种组合。 – 2010-10-12 14:30:16

相关问题