0

interfacesubview を含むビューがあります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すると、さらに複雑になる他の問題が発生します。

この問題を回避する方法はありますか? どんなヒントでも大歓迎です:)

4

1 に答える 1

2

次のことができます。

  1. のスーパービューに移動touchWheelし、を使用してそのフレームを再計算して、同じウィンドウ座標を持つようにします。interfaceconvertRect:toView:touchWheel
  2. 両方のビューを最終的な位置にアニメーション化します。
  3. アニメーションの完了ブロックで、ステップ 1 の逆を行います。touchWheelのサブビューを作成しinterface、そのフレームを再計算します。

それほど複雑ではないように見えますが、注意点があります。アニメーション中の最大化アクションを防ぐために、最大化ボタン (または適切なコントロールが何であれ) を一時的に無効にすることができます。そうしないと、このアプローチによって予期しない結果が生じる可能性があります。

于 2012-04-21T10:50:59.667 に答える