gpt4 book ai didi

objective-c - iOS:如何将 UIViewAnimationCurve 转换为 UIViewAnimationOptions?

转载 作者:IT老高 更新时间:2023-10-28 11:37:35 26 4
gpt4 key购买 nike

UIKeyboardAnimationCurveUserInfoKey有一个 UIViewAnimationCurve值(value)。怎么转换成对应的UIViewAnimationOptionsoptions 一起使用的值+[UIView animateWithDuration:delay:options:animations:completion:]的论据?

// UIView.h

typedef enum {
UIViewAnimationCurveEaseInOut, // slow at beginning and end
UIViewAnimationCurveEaseIn, // slow at beginning
UIViewAnimationCurveEaseOut, // slow at end
UIViewAnimationCurveLinear
} UIViewAnimationCurve;

// ...

enum {
// ...
UIViewAnimationOptionCurveEaseInOut = 0 << 16, // default
UIViewAnimationOptionCurveEaseIn = 1 << 16,
UIViewAnimationOptionCurveEaseOut = 2 << 16,
UIViewAnimationOptionCurveLinear = 3 << 16,
// ...
};
typedef NSUInteger UIViewAnimationOptions;

显然,我可以使用 switch 创建一个简单的类别方法。声明,像这样:

// UIView+AnimationOptionsWithCurve.h

@interface UIView (AnimationOptionsWithCurve)
@end

// UIView+AnimationOptionsWithCurve.m

@implementation UIView (AnimationOptionsWithCurve)

+ (UIViewAnimationOptions)animationOptionsWithCurve:(UIViewAnimationCurve)curve {
switch (curve) {
case UIViewAnimationCurveEaseInOut:
return UIViewAnimationOptionCurveEaseInOut;
case UIViewAnimationCurveEaseIn:
return UIViewAnimationOptionCurveEaseIn;
case UIViewAnimationCurveEaseOut:
return UIViewAnimationOptionCurveEaseOut;
case UIViewAnimationCurveLinear:
return UIViewAnimationOptionCurveLinear;
}
}

@end

但是,有没有更简单/更好的方法?

最佳答案

您建议的类别方法是执行此操作的“正确”方法 - 您不一定能保证这些常量保持其值。但是,从查看它们的定义方式来看,您似乎可以这样做

animationOption = animationCurve << 16;

...如果编译器想提示的话,可能会先转换为 NSUInteger,然后再转换为 UIViewAnimationOptions。

关于objective-c - iOS:如何将 UIViewAnimationCurve 转换为 UIViewAnimationOptions?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7327249/

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