objective-c – 如何在NSImageView内部实现NSImage的连续旋转?
未来观点:
我已经设法完成这个旋转动画和代码与描述可以在tho问题找到. NSImage rotation in NSView is not working 在你继续之前,请提出Duncan C的答案.当我从他的答案中实现这个轮换时. 我有这样的形象, 我想继续旋转这个同步图标,在不同的线程上.现在我尝试使用Quartz作曲家,并将动画添加到QCView,但它具有非常疯狂的效果,也非常慢. 题 : 如何以非常少的处理费用连续旋转图像? 功夫 我读了CoreAnimation,Quartz2D文档,但是我没有找到让它工作的方式.到目前为止,我唯一知道的是,我必须使用 > CALayer 现在,我并不期待代码,但是用伪代码的理解将会很棒! 解决方法
将物体旋转超过180度实际上有点棘手.问题是您为结束旋转指定转换矩阵,并且系统决定沿另一个方向旋转.
我所做的是创建小于180度的CABasicAnimation,设置为加法,并重复计数.动画中的每个步骤更多地动画对象. 以下代码取自iOS应用程序,但该技术在Mac OS中是相同的. CABasicAnimation* rotate = [CABasicAnimation animationWithKeyPath: @"transform.rotation.z"]; rotate.removedOnCompletion = FALSE; rotate.fillMode = kCAFillModeForwards; //Do a series of 5 quarter turns for a total of a 1.25 turns //(2PI is a full turn,so pi/2 is a quarter turn) [rotate setToValue: [NSNumber numberWithFloat: -M_PI / 2]]; rotate.repeatCount = 11; rotate.duration = duration/2; rotate.beginTime = start; rotate.cumulative = TRUE; rotate.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; CAAnimation对象对图层进行操作,因此对于Mac OS,您需要在界面构建器中设置“想要图层”属性,然后将动画添加到视图的图层. 为使您的视野永远旋转,您可以将重复计数设置为1e100等非常大的数字. 创建动画后,您可以使用以下代码将其添加到视图的图层: [myView.layer addAnimation: rotate forKey: @"rotateAnimation"]; 这就是它所有的一切. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |