移动UIView

时间:2012-08-01 16:48:55

标签: objective-c ios animation uiview

我正在尝试使用以下方法以编程方式移动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)的框架似乎正在按原样移动。但是,屏幕上的对象不会移动。我也试过设置边界和中心而不是框架,所有这些都有类似的结果。我也尝试使用动画而不是设置框架,但无济于事。

我还应该做些什么才能让屏幕上的图像显示更改框架?

2 个答案:

答案 0 :(得分:1)

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

要为视图制作动画,您应该使用UIKit为您提供的本机支持。特别是,请查看the Animations section in the UIView class reference

答案 1 :(得分:1)

试试这个

    [UIView animateWithDuration:0.3
                      delay:0.0
                    options: UIViewAnimationCurveEaseOut
                 animations:^{
                     datePickerView.frame = imageFrame;
                 } 
                 completion:^(BOOL finished){
                     self.datePickerViewFlag = NO;
                 }];