-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
您好,当放在cell中时,上下滚动回来时弹幕从头开始滚动,怎么能保持之前的状态? #1
Comments
我理解你的意思是每个 |
感谢您的回复,我的目的是想要让tableView在上下滚动时不影响弹幕,往上滚动再滚动回来,弹幕一直是继续走,离开屏幕不暂停也不重头开始,而是继续当前横向移动,再次感谢开源这么优秀的框架 |
明白你的意思了,你的需求cell的重用机制会把动画吞掉,即使你不重用也只是重复创建新的cell,不但效果没有实现反而会消耗内存降低帧数,解决办法就是自己创建一个缓存池将cell存起来,核心代码如下: 实测这种实现也不会造成卡顿 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *cellid = [NSString stringWithFormat:@"ZBTestTableViewCell-%ld-%ld",indexPath.section,indexPath.row];
NSArray *objects = [self.cellArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"reuseIdentifier = %@",cellid]];
if (objects.count > 0) {
return objects.firstObject;
}else {
ZBTestTableViewCell *cell = [[ZBTestTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellid];
[self.cellArray addObject:cell];
return cell;
}
} 这里可以把 cellArray 优化剥离出来一个类,具体你自己动手实现一下 |
感谢您的回复和解答,这个问题我解决了,现在遇到另一个问题,当我push到另一个页面再pop返回时,我想让弹幕进行之前的状态,但是返回后都是重新开始,我调试发现oldBarrage.layer.presentationLayer frame,获取到的rect.origin.x的值都为负数且刚好是负orldBarrage的宽度,这个一直不知道该怎么处理,应该是presentationLayer在离开当前屏幕后就获取不到frame了 |
也不是进行之前的状态,就是让它在后台也能持续在走,返回时坐标也按动画的速度进行frame更新 |
这个解决办法,就是不能用系统的push或者present,用 viewController的 addChildViewController,并添加view,然后在新的viewController控制view的动画模拟push动画效果,这样原来viewController上的view的layer才不会被kill,系统的push或者present这两个方法都会结束当前 layer 的动画 |
好的,确实是非常好的解决办法,谢谢您,我这边再调整一下 |
您好,当放在cell中时,上下滚动回来时弹幕从头开始滚动,怎么能保持之前的状态?感谢,已经去掉了cell复用
The text was updated successfully, but these errors were encountered: