Xcode 5和IOS 7枚举警告UIViewAnimationCurve EaseOut

时间:2014-01-30 11:50:51

标签: ios enums xcode5

嗨我试图创建边号侧边菜单但是收到警告我已经上了许多选项没有什么对我有用请帮我

我使用过的代码:

-(void) animatedLayerToPoint:(CGFloat)x
 {
    [UIView animateKeyframesWithDuration:0.3 delay:0  
         options:UIViewAnimationCurveEaseOut 
         animations:^{
                              CGRect frame = self.toplayer.frame;
                              frame.origin.x = x;
                              self.toplayer.frame = frame;
                          }
                          completion:^(BOOL finished){
                              self.layerPosition = self.toplayer.frame.origin.x;
                          }];

   }

这是警告我

Implicit conversion from enumeration type 'enum UIViewAnimationCurve' to different enumeration type 'UIViewAnimationOptions' (aka 'enum UIViewAnimationOptions')

我找到了解决方案我已经看到了一些不能正常工作的我xcode 5 link i found solution 在上面链接告诉给予

他们告诉他们说这个

  

UIViewAnimationOptionCurveEaseOut

而不是

  

UIViewAnimationCurveEaseOut

但它不起作用我需要帮助

4 个答案:

答案 0 :(得分:1)

您需要使用:UIViewKeyframeAnimationOptions枚举来解决问题。

animateKeyframesWithDuration:选择UIViewKeyframeAnimationOptions选项,因为它是第3个参数。您传递的是UIViewAnimationCurve枚举,而不是UIViewKeyframeAnimationOptions


参考:

  

animateKeyframesWithDuration:delay:options:animations:completion:

     

创建可用于设置的动画块对象   当前视图的基于关键帧的动画。

+ (void)animateKeyframesWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewKeyframeAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion
  

参数

     

<强>持续时间

     

整个动画的持续时间,以秒为单位。如果指定负值或0,则立即进行更改   没有动画。

     

<强>延迟

     

指定开始播放前等待的时间(以秒为单位)。

     

选项

     

选项掩码,指示您希望如何执行动画。有关有效常量的列表,请参阅   “UIViewKeyframeAnimationOptions”。

     

<强>动画

     

包含提交视图的更改的块对象。通常,你打电话给   addKeyframeWithRelativeStartTime:relativeDuration:animations:方法   从这个区块里面一次或多次。您也可以更改视图   如果您希望这些更改在整个动画中设置动画,则直接显示值   持续时间。该块不带参数,也没有返回值。做   不要为此参数使用nil值。完成

     

动画序列结束时要执行的块对象。此块没有返回值,只接受一个布尔参数   表示动画是否在之前完成   完成处理程序被调用。如果动画的持续时间为0,   该块在下一个运行循环周期的开始执行。   您可以为此参数使用nil值。

答案 1 :(得分:1)

在iOS 4.0及更高版本中不鼓励使用此方法。相反,您应该使用animateWithDuration:delay:options:animations:completion:方法来指定动画和动画曲线选项。

答案 2 :(得分:0)

根据apples docs,选项应该是。

<强> UIViewKeyframeAnimationOptions animateKeyframesWithDuration:delay:options:animations:completion: method.一起使用的关键帧动画选项 选项应如下所示。

typedef enum {
   UIViewKeyframeAnimationOptionLayoutSubviews            = UIViewAnimationOptionLayoutSubviews,
   UIViewKeyframeAnimationOptionAllowUserInteraction      = UIViewAnimationOptionAllowUserInteraction,
   UIViewKeyframeAnimationOptionBeginFromCurrentState     = UIViewAnimationOptionBeginFromCurrentState,
   UIViewKeyframeAnimationOptionRepeat                    = UIViewAnimationOptionRepeat,
   UIViewKeyframeAnimationOptionAutoreverse               = UIViewAnimationOptionAutoreverse,
   UIViewKeyframeAnimationOptionOverrideInheritedDuration = UIViewAnimationOptionOverrideInheritedDuration,
   UIViewKeyframeAnimationOptionOverrideInheritedOptions  = UIViewAnimationOptionOverrideInheritedOptions,

   UIViewKeyframeAnimationOptionCalculationModeLinear     = 0 << 9,
   UIViewKeyframeAnimationOptionCalculationModeDiscrete   = 1 << 9,
   UIViewKeyframeAnimationOptionCalculationModePaced      = 2 << 9,
   UIViewKeyframeAnimationOptionCalculationModeCubic      = 3 << 9,
   UIViewKeyframeAnimationOptionCalculationModeCubicPaced = 4 << 9
} UIViewKeyframeAnimationOptions;

否则会显示警告,在64位应用程序中,可能会导致严重问题。

答案 3 :(得分:0)

请改用此选项:

 UIViewAnimationOptionCurveEaseOut 

这真的是你需要改变才能发出警告。