iPhone 4在呈现视图时播放动画

时间:2011-10-08 18:52:38

标签: iphone objective-c xcode animation uiview

我想将视图中的按钮放在固定点周围的圆圈中。我可以这样做:

 button.layer.anchorPoint = CGPointMake(offsetX/button.frame.size.width, offsetY/button.frame.size.height);

button.transform = [self calculateLabelPositionFromFixedPointWithOffsetClockwiseInDegrees:commonAngleRatio*startSpacing*spacingRatio++];

其中calculateLabelPositionFromFixedPointWithOffsetClockwiseInDegrees:angleInDegrees是我写的一个函数给我CGAfflineTransformMakeRotation。

我希望按钮在显示视图时动画“轨道运行”到正确的位置。我尝试将一个定时器调用动画到“viewWillAppear”,但似乎没有工作。

编辑:我将UIViewController子类化了两次:

@interface HomeScreenAbstractParentController : UIViewController<UITableViewDelegate, UITableViewDataSource, UIGestureRecognizerDelegate, ContextActionDelegate, RemoteControlDelegate> {...}

@interface AnimatedController : HomeScreenAbstractParentController
{}

在AnimatedController中,以下方法不会被调用。我将AnimatedController的视图添加到homeScreenController的后面(如在Weather应用程序中),当用户按下按钮时,视图会翻转到它的背面。完成后,背面应该为控件设置动画。

-(void)viewWillAppear:(BOOL)animated

{
    NSLog(@"viewWillAppear");
    [super viewWillAppear:animated];

}


-(void)viewDidAppear:(BOOL)animated
{ 
    NSLog(@"viewDidAppear");
    [super viewDidAppear:animated];
    [self animateControls:nil];


}

在上面应用程序生命周期的哪个阶段,我会安排计时器将按钮动画到位置?是我翻转视图的时候吗?

1 个答案:

答案 0 :(得分:0)

在viewController中

-(void)viewDidAppear {

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1]; //amount of seconds animation should run
button.transform = [self calculateLabelPositionFromFixedPointWithOffsetClockwiseInDegrees:commonAngleRatio*startSpacing*spacingRatio++];
[UIView commitAnimations];


}