0

我正在尝试使用以下方法以编程方式移动 UIView:

-(void)animatePlaybackLine: (int) currentBeat{
    CGRect newFrame = CGRectMake(currentBeat*eighthNoteWidth, 0, eighthNoteWidth, 320);
    [playbackLine setFrame:newFrame];
    NSLog(@"Line animated to %i", currentBeat);
    NSLog(@"New frame origin %f", playbackLine.frame.origin.x);
}

当调用该方法时,NSLogs 显示变量 currentBeat 正在按其应有的方式递增,playbackLine 的帧(我的 UIView)似乎正在按应有的方式移动。但是,屏幕上的对象并没有移动。我也尝试过设置边界和中心而不是框架,它们都有相似的结果。我也尝试使用动画而不是设置框架,但无济于事。

我还应该做些什么来使屏幕上的图像显示变化的框架?

4

2 回答 2

1

我猜你是在循环中调用那个方法?在您的代码完成执行之前,iOS 不会重绘屏幕。你不能像这样循环并看到迭代结果。

要为视图设置动画,您应该使用 UIKit 为您提供的原生支持。特别是,请查看UIView 类参考中的动画部分

于 2012-08-01T16:56:23.000 回答
1

试试这个

    [UIView animateWithDuration:0.3
                      delay:0.0
                    options: UIViewAnimationCurveEaseOut
                 animations:^{
                     datePickerView.frame = imageFrame;
                 } 
                 completion:^(BOOL finished){
                     self.datePickerViewFlag = NO;
                 }];
于 2012-08-01T16:56:33.297 回答