2012-04-15 66 views
0

我有一个视图interface其中包含子视图touchWheel。点击interface上的最小化按钮,我想执行转换&将视图发送到屏幕的右下角。事情是,我想“分离”touchWheel查看&将它与父视图interface分开发送到角落,跟在后面(&实际上淡出)。单独制作视图及其子视图动画

当我尝试这个我遇到一个问题。我的动画最初工作正常& touchWheel发送到底角,根据需要。当touchWheel大约到达目的地的一半时,我生成interface,以便它遵循touchWheel

一旦interface开始动画它似乎控制touchWheel & touchWheel更改当然。

看来interface仍然保留对touchWheel的控制权,因为它是其父视图。

- (void)hideInterfaceButtonClicked : (id) sender 
{ 

    [[NSNotificationCenter defaultCenter] postNotificationName:@"RemoveGrey" object:self]; 

    //Remove Views & transform 
    [touchWheel removeViews]; 
    interfaceHidden = YES; 

     //Send Interface to corner 

[UIView animateWithDuration:1.25 
        delay:0.0 
       options:UIViewAnimationCurveEaseIn 
      animations:^{ 
       // Move to the right 

       CGAffineTransform translateInterface = CGAffineTransformMakeTranslation(437,200); 
       // Scale 
       CGAffineTransform scale = CGAffineTransformMakeScale(0.135,0.135); 

       // Apply them to the view 
       self.transform = CGAffineTransformConcat(scale, translateInterface); 

       self.alpha = 0.0; 

      } completion:^(BOOL finished) { 
       NSLog(@"Animation Has Stopped"); 
       [[NSNotificationCenter defaultCenter] postNotificationName:@"hiddenInterfaceViewNeeded" object:self]; //after MoveView finishes 


      }]; 



} 

制作touchWheel子视图比interface其他东西造成这将事情进一步复杂化等问题。

任何想法如何解决这个问题?任何提示不胜感激:)

回答

2

你可以做到以下几点:

  1. 移动touchWheelinterface的上海华盈,使用convertRect:toView:使touchWheel似乎有相同的窗口坐标重新计算它的框架。
  2. 将两个视图动画化为其最终位置。
  3. 在动画的完成块中做与步骤1相反的操作:使touchWheel成为interface的子视图,再次重新计算其帧。

它看起来并不复杂,但有一个警告:您可能需要暂时禁用最大化按钮(或任何适当的控件),以防止动画期间的最大化操作。否则,这种方法会导致不可预知的结果。

+0

这是我最后提出的解决方案,以及:) – Octave1 2012-04-21 21:22:27

+0

@costique,请您回答类似的问题在这里发布.. https://stackoverflow.com/q/46053072/2534233 – user44776 2017-09-05 14:55:55