0

これが私がここで達成しようとしていることです。画面の上部から画像を開始して下部に移動し、下部に到達すると再び上に戻るようにします。これを行うことで画像を下げることができます

- (void)viewDidLoad {
[super viewDidLoad];


[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:4.0];
[image setFrame:CGRectMake(0, 0, 30, 1500)];
[UIView commitAnimations];


if ([image setFrame:CGPoint =(0, 0, 30, 1500)]) {
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:4.0];
    [image setFrame:CGRectMake(0, 0, 30, 0)];
    [UIView commitAnimations];
}
}

このifステートメントが機能しない場合、これを機能させる方法がわかりません。ポイントの使用は非常に新しいです。

または多分whileループ?何か案は?どうもありがとう!

良い一日を過ごしてください

4

2 に答える 2

2

この行は少し混乱しています:

if ([image setFrame:CGPoint =(0, 0, 30, 1500)]) {

この-[NSView setFrame]関数、ビューのフレームを設定します。現在のフレームが何であるかを確認するために使用することはできません。そのためには、次のようなものを使用します。

if (CGRectEqualToRect([image frame], CGRectMake(0, 0, 30, 1500))) {

これは、-[NSView frame]関数を使用して現在のフレームを取得し、それCGRectEqualToRectを比較します。

于 2011-07-08T00:31:23.527 に答える
0

この行が無効であるため、このコードは最初から実行されません

if ([image setFrame:CGPoint =(0, 0, 30, 1500)]) {

ビューの場所を比較するつもりだったと思います

if (CGPointEqualToPoint(image.frame.origin, CGPointMake(0, 0))) {

画像の幅も1500、正しくないと思われる場所に設定されています

これが機能しない最後の理由は、UIViewが場所の正味の変化を確認し、ビューが移動しないため何も実行されないことを認識するためです。

あなたがする必要があるのは多分このようなブロックを使うことです

float duration = 0.5;
int delay = 0;

[UIView animateWithDuration:duration
                      delay:delay
                    options:UIViewAnimationCurveLinear
                 animations: ^{
                     image.frame = CGRectMake(0, 460, 30, 30);
                 } completion:^(BOOL finished) {

                     [UIView animateWithDuration:duration
                                           delay:delay
                                         options:UIViewAnimationCurveLinear
                                      animations: ^{
                                          image.frame = CGRectMake(0, 0, 30, 30);
                                      } completion:nil];
                 }];
于 2011-07-08T00:38:08.867 に答える