进入编辑/重新排序模式时的 UITableViewCell 自定义绘图和动画
Posted
技术标签:
【中文标题】进入编辑/重新排序模式时的 UITableViewCell 自定义绘图和动画【英文标题】:UITableViewCell Custom Drawing and Animating when Entering Edit/Reorder Mode 【发布时间】:2009-08-04 17:58:56 【问题描述】:我正在尝试做一些与this post 非常相似的事情。从Atebits Fast Scrolling in Tweetie 帖子开始,我有一个 UITableView 子类,它在它的 contentView 的 drawRect: 方法中完成所有的绘制。这完美地工作并且超级快。我现在要做的是动画从编辑到不编辑的过渡。
我想要实现的一个示例是单元格中某些文本右对齐的情况。进入编辑模式时,contentView 向右移动,为编辑控件留出空间,但文本也向右移动到屏幕外。如果我只是在 layoutSubviews 中调用 [contentView setNeedsDisplay] 我可以重新调整右对齐的文本,但它只是跳转到它的新位置。
如何获得动画的过渡效果?
【问题讨论】:
你是如何绘制你的细胞的?如果您遵循 Loren 的建议,您应该直接绘制它们而不是一堆子视图。你有子视图(比如UILabel
)还是直接画东西(比如[myString drawInRect:someRect]
)?
【参考方案1】:
您的layoutSubviews
应如下所示:
-(void)layoutSubviews
[UIView beginAnimations:nil context:nil];
[UIView setAnimationBeginsFromCurrentState:YES];
/* Change offsets here. */
[UIView commitAnimations];
您可能还需要添加到applicationDidFinishLaunching
:
[UIView setAnimationsEnabled:YES];
【讨论】:
layoutSubviews 隐式地为您制作动画,因此不需要 beginAnimations/commitAnimations。当您在 drawRect 中绘制自己的内容时,这不起作用:因为没有要更改的偏移量。动画仅在使用 UIView 子类时有效。以上是关于进入编辑/重新排序模式时的 UITableViewCell 自定义绘图和动画的主要内容,如果未能解决你的问题,请参考以下文章