首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改帧大小时NSImageView不在原地的动画

更改帧大小时NSImageView不在原地的动画
EN

Stack Overflow用户
提问于 2013-03-31 10:31:33
回答 1查看 324关注 0票数 0

我使用下面的代码来放大图像,然后将其恢复为原始大小:

代码语言:javascript
复制
float width = image.image.size.width;
float newWidth = width * 1.05;
float height = image.image.size.height;
float newHeight = height * 1.05;

[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setDuration:.7f];
NSAnimationContext.currentContext.completionHandler = ^{
   [NSAnimationContext beginGrouping];
   [[NSAnimationContext currentContext] setDuration:.7f];
   [[image animator] setFrameSize:NSMakeSize(width, height)];
   [NSAnimationContext endGrouping];
};

[[image animator] setFrameSize:NSMakeSize(newWidth, newHeight)];
[NSAnimationContext endGrouping];

问题是,在动画过程中,图像会稍微向上和向右移动,而不是停留在原地。

如何在动画过程中保持图像的位置?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-31 10:51:59

这是因为你使用的方法,-setFrameSize:,不会改变视图的原点(在Mac上是左下角),所以视图从字面上向右增长。将-setFrame:与动画器代理一起使用,或者将视图层上的变换与CABasicAnimation结合使用,以将动画线性应用于视图的坐标。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15725757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档