作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
UIKeyboardAnimationCurveUserInfoKey
有一个 UIViewAnimationCurve
值(value)。怎么转换成对应的UIViewAnimationOptions
与 options
一起使用的值+[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/
我是一名优秀的程序员,十分优秀!