UIInterpolatingMotionEffect

UIInterpolatingMotionEffect

我通过这种方式在UIInterpolatingMotionEffect的某些 View 中添加了UITableViewCell:

UIInterpolatingMotionEffect *horizontalEffect = [[UIInterpolatingMotionEffect alloc] initWithKeyPath:@"center.x" type:UIInterpolatingMotionEffectTypeTiltAlongHorizontalAxis];
UIInterpolatingMotionEffect *verticalEffect = [[UIInterpolatingMotionEffect alloc] initWithKeyPath:@"center.y" type:UIInterpolatingMotionEffectTypeTiltAlongVerticalAxis];
horizontalEffect.minimumRelativeValue = @(-horizontal);
horizontalEffect.maximumRelativeValue = @(horizontal);
verticalEffect.minimumRelativeValue = @(-vertical);
verticalEffect.maximumRelativeValue = @(vertical);

UIMotionEffectGroup *effectsGroup = [UIMotionEffectGroup new];
effectsGroup.motionEffects = @[horizontalEffect, verticalEffect];

[view addMotionEffect:effectsGroup];

问题在于,效果只是随机出现的,其中一些 View 会获得效果,而另一些 View 则不会。推送 View Controller 并返回后,其他一些可以工作,而另一些则不能。

有什么我想念的吗?是否应在每次重新使用细胞时都应用这种效果?

最佳答案

我有同样的问题。我通过强制重画所有单元格来修复它-使用reloadSections:withRowAnimation:可能对大多数人(或类似方法)都有效,尽管对我而言,我最终不得不编写自己的单元格初始化并重用代码,让我保持引用可变数组中创建的每个单元格,然后清除该数组并在我选择时从头开始构建。希望能有所帮助。

09-07 15:16