理论上,下面的代码应该将屏幕的表格视图单元格设置为右侧,并在其中引入一个黑暗的“视图”。
CGPoint location = [gesture locationInView:tableView];
NSIndexPath *swipedIndexPath = [tableView indexPathForRowAtPoint:location];
UITableViewCell *swipedCell = [tableView cellForRowAtIndexPath:swipedIndexPath];
//code to create view
UIView *sideView;
sideView.backgroundColor = [UIColor lightGrayColor];
//set the side view frame to the same as the cell
sideView.frame = swipedCell.frame;
//add it to the tableview
[tableView addSubview:sideView];
[UIView animateWithDuration:1
animations:^{
sideView.frame = CGRectMake(0, swipedCell.frame.origin.y, swipedCell.frame.size.width, swipedCell.frame.size.height);
// While simultaneously moving the cell's frame offscreen
// The net effect is that the side swipe view is pushing the cell offscreen
swipedCell.frame = CGRectMake(swipedCell.frame.size.width, swipedCell.frame.origin.y, swipedCell.frame.size.width, swipedCell.frame.size.height); //move cell off
}];
但是,只有细胞离开屏幕。它没有灰色视图。
我缺少一步吗?这段代码有什么问题?
示例视频here
答案 0 :(得分:1)
最大的错误是您没有将sideView
初始化为任何内容。
尝试UIView* sideview = [[UIView alloc] initWithFrame:swipedCell.frame];
答案 1 :(得分:0)
添加视图代替单元格并不是一个好主意。您必须处理滚动,表格视图编辑以及UITableView为您处理的其他内容。因此,请尝试将sideView添加为swipedCell.contentView
的子视图,然后执行此动画:
[UIView animateWithDuration:1 animations:^{
sideView.frame = CGRectMake(0, swipedCell.frame.origin.y, swipedCell.frame.size.width, swipedCell.frame.size.height);
//This moves all the subviews except for the sideView off the screen
for (UIView *subview in swipedCell.contentView.subviews)
if (![subview isEqual:sideView])
subview.frame = CGRectOffset(subview.frame, swipedCell.frame.size.width, 0.0);
}];
希望这有帮助!