基本上,当用户从左向右滑动时,我为UITableView创建了一个UISwipeGestureRecognizer。当用户从右向左滑动时,DELETE将呈现并按预期运行。
我正在尝试使用新的自定义UIButton来呈现与刷新时DELETE按钮呈现的完全相同的方式。它不会滑动但是从右到左慢慢地显示出来?
我想这样做,我的自定义UIButton出现在与DELETE相同的位置,除非此时用户从右向左滑动。
在从右到左检测到滑动后,我将此方法设置为@selector:
- (void)displayAddArchiveView:(UIGestureRecognizer *)gestureRecognizer {
// Assume this is the view container that will contain my UIButton
GreenGradientView *archiveView = [[GreenGradientView alloc] initWithFrame:CGRectMake(211.0, 3.0, 63.0, 30.0)];
if (gestureRecognizer.state == UIGestureRecognizerStateEnded) {
CGPoint swipeLocation = [gestureRecognizer locationInView:self.reportsTableView];
NSIndexPath *swipedIndexPath = [self.reportsTableView indexPathForRowAtPoint:swipeLocation];
ReportsTableViewCell *swipedCell = (ReportsTableViewCell *)[self.reportsTableView cellForRowAtIndexPath:swipedIndexPath];
[self tableView:reportsTableView willBeginEditingRowAtIndexPath:swipedIndexPath];
// HERE I should do some sort of UIView animation block to slowly reveal it
// from the right to left or something? Any suggestions. Not sure how to go about it?
[swipedCell addSubview:archiveView];
}
}
我在代码块中的注释表明了我的想法。自定义UIView实际上确实在刷卡后显示,所以我知道它有效。这只是让动画正确,与DELETE按钮显示方式相同的问题?建议?
谢谢!
答案 0 :(得分:0)
你可以试试这样的事情
CGRect finalFrame = archiveView.frame;
archiveView.frame = CGRectMake(finalFrame.origin.x + finalFrame.size.width, finalFrame.origin.y, 0, finalFrame.size.height);
[UIView animateWithDuration:0.3 animations:^{
archiveView.frame = finalFrame;
}];
基本上我已经重置了框架,因此它没有宽度,并将原点设置在最右边(这样它就从右向左增长)。然后在动画块中,我将帧设置为我想要的结束。在您的情况下,您可以在将帧重置为零宽度之前将最终帧保存在局部变量中。