我正在尝试使用以下方法以编程方式移动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)的框架似乎正在按原样移动。但是,屏幕上的对象不会移动。我也试过设置边界和中心而不是框架,所有这些都有类似的结果。我也尝试使用动画而不是设置框架,但无济于事。
我还应该做些什么才能让屏幕上的图像显示更改框架?
答案 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;
}];