首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSView帧源在动画完成后重新设置(动画代理)

NSView帧源在动画完成后重新设置(动画代理)
EN

Stack Overflow用户
提问于 2018-01-24 12:57:10
回答 1查看 452关注 0票数 0

动画代理setFrameOrigin使视图在动画完成后闪回原点。我使用下面的代码动画NSView向下移动-50点,然而,当动画完成时,帧位置似乎被重置到0并导致视图的闪现。

我已经为这个视图设置了自动布局约束,我认为这个位置重置可能是由自动布局引起的。

代码语言:javascript
复制
  NSAnimationContext.beginGrouping()
  NSAnimationContext.current.duration = 0.5
  barVersionFree.animator().setFrameOrigin(NSPoint(x: 0, y: -50))
  NSAnimationContext.endGrouping()

我尝试使用下面的代码再次设置它,但是结果是一样的。

代码语言:javascript
复制
  NSAnimationContext.beginGrouping()
  NSAnimationContext.current.duration = 0.5
  barVersionFree.animator().setFrameOrigin(NSPoint(x: 0, y: -50))
  NSAnimationContext.endGrouping()
  barVersionFree.setFrameOrigin(NSPoint(x:0, y: -50))

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-24 22:08:15

是这样的。在Cocoa中,动画效果就是:对物体外观的暂时扭曲。这可以包括对其不透明度、帧、大小、转换等的更改。当动画结束并被丢弃时,视图对象将回到与任何其他视图对象一样的作用。

如果要使用这种类型的动画更改视图的某些内容,解决方案是:

  1. 获取视图的框架
  2. 将视图的框架设置为希望它结束的位置。
  3. 启动一个动画,从原来的地方开始,在现在的地方结束。

然后,视图似乎从A移动到B,当动画结束时,框架现在位于B。

另一种技术是添加一个"did end动画“处理程序,并让它将框架设置到它的新位置,或者只是隐藏它。

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

https://stackoverflow.com/questions/48423092

复制
相关文章

相似问题

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