也许你可以帮我解决问题。
我在iOS(7)应用中使用新的Facebook POP动画框架。 我有一个带有" +按钮的桌面视图"在每个细胞中。我希望如果用户单击单元格中的按钮,单元格(该单元格的副本)将滑动到右下角(在最后一个标签栏项目中)从alpha 1到0。就像"添加购物车"按钮。因此用户知道该行已添加到购物车中。
有谁知道如何通过Facebook POP框架实现这一目标?或者你能指出我正确的方向吗? 我认为这并不困难,但我无法弄清楚。
非常感谢提前!
答案 0 :(得分:1)
假设您在UIViewController中引用UITableView并将其指定为UITabBarController的选项卡,首先将所选单元格复制到UIView中,然后执行基本POP动画,如下所示:
#import <math.h>
#import "POPAnimation.h"
#import "POPBasicAnimation.h"
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
UIView *view = [self duplicateCell:cell
ContentOffset:tableView.contentOffset
Row:indexPath.row];
[self.view addSubview:view];
NSUInteger numberOfTabs = 3;
CGFloat tabWidth = self.view.frame.size.width / numberOfTabs;
[self fadeOutView:view WhileMoveTo:CGRectMake(self.view.frame.size.width - tabWidth,
tableView.frame.size.height,
tabWidth,
view.frame.size.height)];
}
- (UIView*)duplicateCell:(UITableViewCell*)cell ContentOffset:(CGPoint)offset Row:(NSInteger)row
{
CGFloat cellHeight = cell.frame.size.height;
CGFloat topVisibleCellRow = (int)(offset.y / cellHeight) ;
CGFloat delta = fmodf(offset.y, cellHeight);
CGRect frame = cell.frame;
frame.origin.y = (row - topVisibleCellRow)*cellHeight - delta;
UIView *view = [[UIView alloc] initWithFrame:frame];
view.backgroundColor = [UIColor yellowColor];
UILabel *label = [[UILabel alloc] initWithFrame:cell.textLabel.frame];
label.textColor = [UIColor blackColor];
label.text = cell.textLabel.text;
label.contentMode = UIViewContentModeScaleAspectFit;
[view addSubview:label];
return view;
}
- (void)fadeOutView:(UIView*)view WhileMoveTo:(CGRect)rect
{
[view pop_removeAllAnimations];
POPBasicAnimation *animFrame = [POPBasicAnimation animationWithPropertyNamed:kPOPViewFrame];
POPBasicAnimation *animAlpha = [POPBasicAnimation animationWithPropertyNamed:kPOPViewAlpha];
CGFloat fDuration = 1.5f;
animFrame.toValue = [NSValue valueWithCGRect:rect];
animFrame.duration = fDuration;
animAlpha.toValue = @(0.0);
animAlpha.duration = fDuration;
[view pop_addAnimation:animFrame forKey:@"animateFrame"];
[view pop_addAnimation:animAlpha forKey:@"animateAlpha"];
}
此示例基于基本的UITableViewCell,但您可以将单元格复制调整为任何自定义单元格方案。