动画代理setFrameOrigin使视图在动画完成后闪回原点。我使用下面的代码动画NSView向下移动-50点,然而,当动画完成时,帧位置似乎被重置到0并导致视图的闪现。
我已经为这个视图设置了自动布局约束,我认为这个位置重置可能是由自动布局引起的。
NSAnimationContext.beginGrouping()
NSAnimationContext.current.duration = 0.5
barVersionFree.animator().setFrameOrigin(NSPoint(x: 0, y: -50))
NSAnimationContext.endGrouping()我尝试使用下面的代码再次设置它,但是结果是一样的。
NSAnimationContext.beginGrouping()
NSAnimationContext.current.duration = 0.5
barVersionFree.animator().setFrameOrigin(NSPoint(x: 0, y: -50))
NSAnimationContext.endGrouping()
barVersionFree.setFrameOrigin(NSPoint(x:0, y: -50))

发布于 2018-01-24 22:08:15
是这样的。在Cocoa中,动画效果就是:对物体外观的暂时扭曲。这可以包括对其不透明度、帧、大小、转换等的更改。当动画结束并被丢弃时,视图对象将回到与任何其他视图对象一样的作用。
如果要使用这种类型的动画更改视图的某些内容,解决方案是:
然后,视图似乎从A移动到B,当动画结束时,框架现在位于B。
另一种技术是添加一个"did end动画“处理程序,并让它将框架设置到它的新位置,或者只是隐藏它。
https://stackoverflow.com/questions/48423092
复制相似问题