UIView.frame的核心动画

Cry*_*tal 2 iphone core-animation

我正在尝试移动两个视图的帧的简单动画.基本上隐藏广告直到加载,然后从底部向上移动框架,以及从底部开始的视图,然后在广告向上推动时向上移动.开始和结束位置都是正确的,但我不认为它是动画的.它是否正确?谢谢.

CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"frame"];
    animation.duration = 1.0;

    CGRect adFrame = CGRectMake(self.adBanner.frame.origin.x, self.adBanner.frame.origin.y - self.adBanner.frame.size.height, self.adBanner.frame.size.width, self.adBanner.frame.size.height);
    self.adBanner.frame = adFrame;
    [self.adBanner.layer addAnimation:animation forKey:@"frame"];

    CGRect buttonViewFrame = CGRectMake(self.ButtonView.frame.origin.x, self.adBanner.frame.origin.y - self.adBanner.frame.size.height, self.ButtonView.frame.size.width, self.ButtonView.frame.size.height);
    self.ButtonView.frame = buttonViewFrame;
    [self.ButtonView.layer addAnimation:animation forKey:@"frame"];
Run Code Online (Sandbox Code Playgroud)

Noa*_*oon 12

对于像这样简单的东西,你并不需要直接使用Core Animation -UIView的内置动画系统就足够了.

[UIView animateWithDuration:1.0 animations:^{
    self.adBanner.frame = adFrame;
    self.ButtonView.frame = buttonViewFrame;
}];
Run Code Online (Sandbox Code Playgroud)

或者,如果您的目标是4.0之前的iOS,

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
    self.adBanner.frame = adFrame;
    self.ButtonView.frame = buttonViewFrame;
[UIView commitAnimations];
Run Code Online (Sandbox Code Playgroud)