gpt4 book ai didi

iOS - Facebook POP : slide tableview cell to bottom right corner

转载 作者:行者123 更新时间:2023-11-29 12:40:27 25 4
gpt4 key购买 nike

也许你能帮我解决一个问题。

我在 iOS (7) 应用程序中使用新的 Facebook POP 动画框架。我在每个单元格中都有一个带有“+按钮”的表格 View 。我希望如果用户单击单元格中的按钮,则该单元格(该单元格的副本)从 alpha 1 滑动到右下角(在最后一个标签栏项目中)到 0。就像“添加到购物车”按钮。因此用户知道该行已添加到购物车。

有谁知道我如何使用 Facebook POP 框架实现这一点?或者你能指出我正确的方向吗?我认为这并不难,但我想不通。

非常感谢!

最佳答案

假设您引用 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,但您可以将单元格复制调整为任何自定义单元格方案。

关于iOS - Facebook POP : slide tableview cell to bottom right corner,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25096397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com