gpt4 book ai didi

ios - UITableViewCell 中的 UIView 动画只工作一次

转载 作者:行者123 更新时间:2023-11-29 13:07:00 26 4
gpt4 key购买 nike

这是一个奇怪的事实:

我有一个自定义的 UITableViewCell,其中有一个动画(图像移动)。

它在创建单元格时工作正常。

但是一旦我滚动隐藏单元格然后返回它,动画就停止了。那个,我能理解。但是我也在我的 viewWillAppear 中调用我的动画方法。有线部分是调用方法,我在其中放置了一个断点,没有任何东西被取消分配......

我的 UITableViewCell 强保持(里面有音乐播放器,音乐继续播放)。我真的不明白。

这是我的代码:

@property (nonatomic, strong) DWPlayerCellVC *playerView;


UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"player"];

if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"player"];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}

NSArray *viewsToRemove = [cell.contentView subviews];
for (UIView *v in viewsToRemove) {
[v removeFromSuperview];
}

if(!self.playerView){
self.playerView = [[DWPlayerCellVC alloc] init];
}

[cell.contentView addSubview:self.playerView.view];

self.playerView.model = self.model[indexPath.row];


return cell;

DWPlayerCellVC :

@implementation DWPlayerCellVC

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.

}

-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];

[self zoomIn];
}

- (void)setModel:(id)model
{
_model = model;
// ...
[self zoomIn];

}

- (void)zoomIn
{
UIViewAnimationOptions options =
UIViewAnimationOptionBeginFromCurrentState |
UIViewAnimationOptionCurveEaseInOut |
UIViewAnimationOptionRepeat |
UIViewAnimationOptionAutoreverse;

[UIView
animateWithDuration:10.f
delay:0.f
options:options
animations:^{
CGFloat scale = 1.4f;
self.imageCoverView.transform = CGAffineTransformMakeScale(scale, scale);
} completion:NULL];
}

如果你有任何想法...

非常感谢!

最佳答案

看起来问题是因为 zoomIn 只会被 setModel 调用。这是因为 UITabelViewCells 不应该管理显示 UIViewControllers 所以 viewWillAppear: 永远不会被调用。

我可以想到两个选项。

首先是将 Root View Controller 设置为包含 View Controller ,并将 DWPlayerCellVC 添加为 childViewController。此选项确实需要一些工作才能使其全部运行,我建议阅读 Creating Custom Container View Controllers查看使其正常工作所需的条件。

第二个(也是我会使用的那个)是创建一个处理运行动画的 UITableViewCell 子类。然后你可以只实现方法 prepareForReuse 来重新启动动画。当您使用 dequeueReusableCellWithIdentifier: 时,该方法会自动在单元格上调用。

关于ios - UITableViewCell 中的 UIView 动画只工作一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18405447/

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