从角落动画缩放视图(放大)

时间:2012-11-28 17:30:33

标签: ios core-animation

我正试图像这样扩展我的观点:

CGRect endFrame = self.detailView.bounds;

[UIView animateWithDuration:0.25 animations:^{
    self.descriptionButton.bounds = endFrame;
}completion:^(BOOL finished) {
    self.containerView.alpha = 0.0;
    self.detailView.alpha = 1.0;
}];

我的detailView是容器视图。我的描述按钮位于左上角。我希望通过按钮占据整个屏幕来放大类型效果。但是,默认情况下,Core Animation会从其中心的锚点进行缩放。

我尝试将锚点设置到视图图层的右下角,如下所示:

self.descriptionButton.layer.anchorPoint = CGPointMake(self.descriptionButton.bounds.size.width, self.descriptionButton.bounds.size.height);

CGRect endFrame = self.detailView.bounds;

[UIView animateWithDuration:0.25 animations:^{
    self.descriptionButton.bounds = endFrame;
}completion:^(BOOL finished) {
    self.containerView.alpha = 0.0;
    self.detailView.alpha = 1.0;
}];

但是当我这样做时,我根本看不到任何动画。有什么想法吗?感谢。

2 个答案:

答案 0 :(得分:0)

你可以使用一点点数学

CGRect endFrame = self.detailView.frame;
CGRect currentFrame = self.detailView.frame;

[UIView animateWithDuration:0.25 animations:^
 {
     self.descriptionButton.frame = CGRectMake(currentFrame.x - (endFrame.size.width - currentFrame.size.width), currentFrame.y - (endFrame.size.height - currentFrame.size.height), endFrame.size.width, endFrame.size.height);
 }
                                 completion:^(BOOL finished)
 {
     self.containerView.alpha = 0.0;
     self.detailView.alpha = 1.0;
 }];

答案 1 :(得分:0)

anchorPoint属性被“标准化”为0到1之间的值.0.5,0.5是中心。 0,0是左上角。 1,1是右下角。

您的代码是使用像素坐标设置anchorPoint属性,这是错误的。我不知道它会做什么,但这是错误的。