UIInterpolatingMotionEffect

UIInterpolatingMotionEffect

我遇到了 UIInterpolatingMotionEffect 类的问题,应用程序可以编译,但是当我尝试存档时,出现了这个编译错误:
No visible @interface for 'UIInterpolatingMotionEffect' declares the selector 'initWithKeyPath:type:'
我在此函数的 UIInterpolatingMotionEffect 初始化程序上收到此错误:

- (void)addMotionEffects
{
    UIInterpolatingMotionEffect *horizontalMotionEffect = [[UIInterpolatingMotionEffect alloc]
                                                           initWithKeyPath:@"center.x" type:UIInterpolatingMotionEffectTypeTiltAlongHorizontalAxis];

    horizontalMotionEffect.minimumRelativeValue = @(-20);
    horizontalMotionEffect.maximumRelativeValue = @(20);

    UIInterpolatingMotionEffect *verticalMotionEffect = [[UIInterpolatingMotionEffect alloc]
                                                         initWithKeyPath:@"center.y" type:UIInterpolatingMotionEffectTypeTiltAlongVerticalAxis];
    verticalMotionEffect.minimumRelativeValue = @(-20);
    verticalMotionEffect.maximumRelativeValue = @(20);

    UIMotionEffectGroup *group = [UIMotionEffectGroup new];
    group.motionEffects = @[horizontalMotionEffect, verticalMotionEffect];
    [self.containerView addMotionEffect:group];
}

我认为在尝试针对 arm64 架构进行编译时会出现一种错误,但我无法弄清楚如何解决该问题。

有任何想法吗?

最佳答案

这是一个WTF的答案,也是一个WTF的问题,但有效......

为了避免编译错误,我使用提供错误的选择器为 UIInterpolatingMotionEffect 创建了一个类别。但仍然不知道为什么 Xcode 不存档没有这个...

@interface UIInterpolatingMotionEffect (lol)
- (instancetype)initWithKeyPath:(NSString *)keyPath type:(UIInterpolatingMotionEffectType)type;
@end

10-08 17:13