UIViewAnimation 导致从枚举类型隐式转换

Posted

技术标签:

【中文标题】UIViewAnimation 导致从枚举类型隐式转换【英文标题】:UIViewAnimation causes Implicit conversion from enumeration type 【发布时间】:2012-02-23 14:01:53 【问题描述】:

我收到此警告

从枚举类型'UIViewAnimationCurve'到不同枚举类型'UIViewAnimationTransition'的隐式转换

从这段代码的最后一行开始

if (((UIView*)[[slideViews subviews] objectAtIndex:0]).frame.origin.x > SLIDE_VIEWS_MINUS_X_POSITION) 
    UIView* tempRight2View =[[slideViews subviews] objectAtIndex:[[slideViews subviews] count]-1];
    [UIView beginAnimations:@"ALIGN_TO_MINIMENU" context:NULL];
    [UIView setAnimationTransition:UIViewAnimationCurveEaseInOut forView:viewAtLeft cache:YES]; 

我正在改编 StackScrollView 的代码,知道如何“显式”转换吗?

TIA

【问题讨论】:

方法 [UIView beginAnimations:context:] 已弃用,您不应再使用它。 【参考方案1】:

您正在使用一组不同的枚举:您必须在其中放置一个 UIViewAnimationTransition

typedef enum 
UIViewAnimationTransitionNone,
UIViewAnimationTransitionFlipFromLeft,
UIViewAnimationTransitionFlipFromRight,
UIViewAnimationTransitionCurlUp,
UIViewAnimationTransitionCurlDown UIViewAnimationTransition;

当您使用 UIViewAnimationCurve 之一时:

typedef enum 
UIViewAnimationCurveEaseInOut,
UIViewAnimationCurveEaseIn,
UIViewAnimationCurveEaseOut,
UIViewAnimationCurveLinear UIViewAnimationCurve

它们仍然是整数,但来自不同的常量组

【讨论】:

【参考方案2】:

所有枚举都是整数。

您调用的方法采用UIViewAnimationTransition

+ (void)setAnimationTransition:(UIViewAnimationTransition)transition 
                       forView:(UIView *)view 
                         cache:(BOOL)cache;

您将其设置为UIViewAnimationCurve 定义的值之一。

【讨论】:

以上是关于UIViewAnimation 导致从枚举类型隐式转换的主要内容,如果未能解决你的问题,请参考以下文章

警告:从枚举类型“UIInterfaceOrientation”到不同枚举类型“UIDeviceOrientation”的隐式转换?

C#如何把INT类型转换为方法参数对应的枚举类型?怎么强制转换?

数据类型隐式转换导致的阻塞

数据类型隐式转换导致的阻塞

java怎么声明枚举类型

如何使用 LinqToSql 将字符串值隐式转换为枚举?