1

UITextView がその位置に表示されるように、インデックス 0 が押されたときにセグメント化されたコントロールを垂直方向に変換しようとしています。UITextView のアニメーションが機能しています。

この他のスタックオーバーフロー スレッドから次のコードを実装しようとしました。btnMyButton が mySegControl に置き換えられます。

btnMyButton.frame = CGRectMake(oldx,oldy,width,height);
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationTransition:UIViewAnimationTransitionNone forView:btnMyButton];
[UIView setAnimationDuration:0.3];  
btnMyButton.frame = CGRectMake(newx, newy, width, height);
[UIView commitAnimations];

変更すると、[UIView setAnimationTransition:UIViewAnimationTransitionNone forView:presentingComplaintSegCtrl];

次の警告が表示されます: 「セマンティック問題クラス メソッド '+setAnimationTransition:forView:' が見つかりません (戻り型のデフォルトは 'id')」

これにアプローチするより良い方法はありますか?

注: XIB でセグメント化されたコントロールを作成しています。

ありがとうございました

4

2 に答える 2

1

警告が示すように、メソッド「+setAnimationTransition:forView:」は UIView に存在しません。探しているメソッドは「+setAnimationTransition:forView:cache:」です。ただし、ドキュメントには次のような注意書きがあります。

このメソッドの使用は、iOS 4.0 以降ではお勧めできません。代わりに、transitionWithView:duration:options:animations:completion:メソッドを使用してトランジションを実行する必要があります。

iOS 3.x をサポートする必要がない場合は、Apple の指示に従い、アニメーションに「transitionWithView:duration:options:animations:completion:」メソッドを使用することをお勧めします :)

[編集]

@Ríomhaireさん、質問をもう一度読んでください...あなたの例では、UIViewでanimateWithDuration:animations:メソッドを使用するのがおそらく最善です。アニメーション化する変更のコードをブロック内に記述し、それをパラメーターとしてこのメ​​ソッドに渡します。必要な場合に備えて、ブロックに関するドキュメントを次に示します

于 2012-06-04T13:21:44.183 に答える
0

あなたは探している+setAnimationTransition:forView:cache:

UIViewのリファレンスから:

cache YESの場合、ビューの前後の画像が1回レンダリングされ、アニメーションのフレームを作成するために使用されます。キャッシングによりパフォーマンスを向上させることができますが、このパラメーターをYESに設定した場合は、遷移中にビューまたはそのサブビューを更新しないでください。ビューとそのサブビューを更新すると、キャッシュ動作が妨げられ、アニメーション中にビューのコンテンツが正しく(または間違った場所に)レンダリングされる可能性があります。ビューを更新するには、遷移が終了するまで待つ必要があります。NOの場合、ビューとそのコンテンツは、トランジションアニメーションのフレームごとに更新する必要があります。これは、フレームレートに著しく影響する可能性があります。

だから追加cache:YESまたはcache:NO

または、私がこれを入力したときに言及したパルポムとして、transitionWithView:...

于 2012-06-04T13:24:55.163 に答える