Giá trị UIKeyboardAnimationCurveUserInfoKey
có giá trị UIViewAnimationCurve
. Làm cách nào để chuyển đổi giá trị này thành giá trị UIViewAnimationOptions
tương ứng để sử dụng với đối số options
của +[UIView animateWithDuration:delay:options:animations:completion:]
?iOS: Cách chuyển đổi UIViewAnimationCurve thành UIViewAnimationOptions?
// 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;
Rõ ràng, tôi có thể tạo ra một phương pháp loại đơn giản với một tuyên bố switch
, như vậy:
// 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
Nhưng, có một/cách tốt hơn thậm chí dễ dàng hơn?
Tôi làm như thế nào? Tôi nghĩ LLVM sẽ tự động chuyển đổi các phương thức Objective-C thành các hàm nội tuyến khi có thể. – ma11hew28
Có vẻ như ai đó đã trả lời câu hỏi của bạn: http://stackoverflow.com/questions/8194504/does-llvm-convert-objective-c-methods-to-inline-functions –
Tôi đã thêm phiên bản nội tuyến vào câu trả lời của mình. –