我有一个带有UITableView
的可滑动的UITableViewCell
。滑动一个单元格后,我希望该单元格下方的视图可见(显示)。这是我的代码:
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
_cellBack = [[UIView alloc] initWithFrame:CGRectMake(0, cell.frame.origin.y, cell.frame.size.width, cell.frame.size.height)];
_cellBack.backgroundColor = [UIColor whiteColor];
[self.tableView insertSubview:_cellBack belowSubview:cell];
for (int i = 0; i < [self.tableView subviews].count; i++) {
UIView *v = [[self.tableView subviews] objectAtIndex:i];
if ([v isEqual:_cellBack]) {
NSLog(@"cellBack %d", i);
}
if ([v isEqual:cell]) {
NSLog(@"cell %d", i);
}
}
在
for
循环中,我检查视图的索引是否符合我的期望,确实如此。 _cellBack
的索引比cell
的索引小一。当我将
insertSubview:belowSubview:
调用替换为insertSubview:aboveSubview:
时,它工作正常(尽管在滑动的单元格上方显示了白色的UIView
),所以这不是没有正确分配_cellBack
的问题。我也尝试过insertSubview:atIndex:
,但这也不起作用。是什么原因造成的?
谢谢!
最佳答案
要使SideSwipeTableView示例在ios7及更高版本上运行,只需将行更改为
[cell.superview insertSubview:self.sideSwipeView belowSubview:cell];
其他任何事情都会将后视图推到单元格的顶部,并且您不会获得任何动画效果,动画发生在背景单元格后面!要检查这一点,请将单元格的偏移量更改为小于全屏的位置,以检查您的单元格仍在顶部,而背景确实在下方。从:
cell.frame = CGRectMake(direction == UISwipeGestureRecognizerDirectionRight ? cellFrame.size.width : -cellFrame.size.width, cellFrame.origin.y, cellFrame.size.width, cellFrame.size.height);
至
cell.frame = CGRectMake(direction == UISwipeGestureRecognizerDirectionRight ? cellFrame.size.width/2 : -cellFrame.size.width/2, cellFrame.origin.y, cellFrame.size.width, cellFrame.size.height);
关于iphone - UITableViews中的insertSubview:belowSubview:,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9459672/