0

uiviewのロールアップアニメーションが欲しいです。だから私はmainscrollviewとrollupboardをアニメーション化しています。したがって、viewDidLoadで、これら2つのビューのフレームを次のように設定します。

    dashRollUpStand=[[UIImageView alloc]initWithFrame:CGRectMake(0,346,320,0)];
    mainScrollView=[[UIScrollView alloc]initWithFrame:CGRectMake(10,346,300,0)];

また、このmainScrollViewには多くのサブビューがあります。

今、私は次のコードを使用してロールアップアニメーションでこのビューをロードしています:

 [UIView beginAnimations:nil context:nil];
 [UIView setAnimationDuration:1];
 [UIView setAnimationCurve:UIAnimationCurveLinear];

 [dashRollUpStand setFrame:CGRectMake(0,0,320,346)];
 [mainScrollView setFrame:CGRectMake(10,9,300,337)];
 [UIView commitAnimations];

このロールアップアニメーションは、iPhoneで正常に機能しています。しかし、iPhoneのRetinaディスプレイでは、このアニメーションはまったくスムーズではありません。では、iPhoneのRetinaディスプレイでスムーズにするにはどうすればよいですか?

4

2 に答える 2

0

ビューをviewDidLoadに追加してオフスクリーンにする理由はありますか?

このようにすればいいように思えます。以下のコードでcontainerViewは、ビューを含むビューtoViewはフリップのビュー、fromViewはフリップ元のビューです

[UIView transitionWithView:containerView
                  duration:1.0
                   options:UIViewAnimationOptionTransitionFlipFromRight
                animations:^{ 
                    [fromView removeFromSuperview]; 
                    [containerView addSubview:toView]; 
                }
                completion:NULL];

また、iOS 4 以降で推奨されているブロックベースのアニメーション/トランジション API を使用することも選択しました。

編集:

元のコードが行ったとしても、実際にはビューを移行していないためです。代わりに通常のアニメーション ブロックを使用できます。

[UIView animateWithDuration:1.0
                 animations:^{
                     [dashRollUpStand setFrame:CGRectMake(0,0,320,346)];
                     [mainScrollView setFrame:CGRectMake(10,9,300,337)];
                 }
                 completion:NULL];
于 2012-06-08T07:14:15.127 に答える
0

問題は、使用しているアニメーションの種類ではなく、おそらくビューの横にあるものです。まず最初に、アニメーション ビュー内のサブビューが不透明であることを確認してください。不透明は UIView のプロパティですが、ビューのアルファが 1 未満の場合はオーバーライドされます。あなたは不透明に行くことができます。

于 2012-06-08T09:58:25.110 に答える