0

オブジェクトの新しい位置を計算するために for ループでいくつかの関数を使用します。

...some code....

for (int i = self.frame.origin.x; i <= 710; ++i) {
    CGPoint newP = CGPointMake(i, 1);
    float posY = a * pow((newP.x - w.x),2) - w.y;

    CGPoint result = CGPointMake(i, posY);
    [NSThread sleepForTimeInterval:1];
    self.frame = CGRectMake(result.x, result.y, self.frame.size.width, self.frame.size.height);
    NSLog(@"[%f, %f]", result.x, result.y);
}

、しかしオブジェクトはまだ所定の位置にあります。

コンソール印刷:

2012-06-04 23:13:19.183 PERT Estimator[326:707] [304.000000, 169.499985]
2012-06-04 23:13:20.195 PERT Estimator[326:707] [305.000000, 165.172806]
2012-06-04 23:13:21.197 PERT Estimator[326:707] [306.000000, 160.856293]
2012-06-04 23:13:22.200 PERT Estimator[326:707] [307.000000, 156.550461]
2012-06-04 23:13:23.225 PERT Estimator[326:707] [308.000000, 152.255295]
2012-06-04 23:13:24.265 PERT Estimator[326:707] [309.000000, 147.970810]

等...

どうしたの?

4

1 に答える 1

1

うわー、本当にアニメーション ブロックを使用する必要があります。

/* Starting position  */
[self setFrame:CGRectMake(304, 169.499985,self.frame.size.width, self.frame.size.height)];

[UIView animateWithDuration:1.0
                      delay:0.0 
                    options:UIViewAnimationCurveEaseOut 
                 animations:^ 
                 {
                     [self setFrame:CGRectMake(309, 147, 320,110)];
                 } 
                 completion:^(BOOL finished) 
                 {
                     if ( finished )
                         /* Animation is done, do something, or not */
                         NSLog(@"[%f, %f]", result.x, result.y);
                }];
于 2012-06-04T21:22:21.470 に答える