我正在尝试替换单元格的默认编辑模式行为.
我不想要左边的配件视图的红色圆圈出现.
进入编辑模式后,我需要它将内容视图左移&显示我的删除按钮.
我到目前为止(定制UITableViewCell)覆盖:
-(void) setEditing:(BOOL)editing animated:(BOOL)animated { /* don't call super */ // [super setEditing:editing animated:animated]; _isEditing = editing; CGFloat newContentViewX = 0.0f; UIColor *newDeleteButtonColor = [UIColor clearColor]; if ( _isEditing ) { newContentViewX = -40.0f; newDeleteButtonColor = [UIColor redColor]; } if ( animated ) { [UIView animateWithDuration:0.5f delay:0.0f options:UIViewAnimationOptionCurveEaseInOut animations:^ { self.contentView.x = newContentViewX; //change frame.origin.x _deleteButton.backgroundColor = newDeleteButtonColor; } completion:nil]; } else { self.contentView.x = newContentViewX; //change frame.origin.x _deleteButton.backgroundColor = newDeleteButtonColor; } } -(BOOL) editing { return _isEditing; }
&安培;这是结果:
以上代码非常好!直到开始滚动& contentview被重置.回到第一个图像.编辑标志不会持久化我的内容视图框架更改.
我已经添加了这一行:
[cell setEditing:_tableView.isEditing animated:NO];
在cellForRowAtIndexPath&虽然它正在呼叫&正确设置编辑模式我的内容视图仍然处于原始位置&没有更新
短视频解说问题:
Youtube link
有人有这个问题吗?
解决方法
您的问题是,UITableView是“有帮助”的设置适当的状态布局与您从cellForRowAtIndexPath返回的单元格.
解决这个问题的最简单的方法是在你的单元格类中重写–layoutSubviews.
- (void)layoutSubviews { if (self.editing) { CGRect bounds = self.bounds; // do your custom layout } else [super layoutSubviews]; }
这应该得到很多分类的东西.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。