我可以在没有动画的情况下更改strokeEnd属性吗?

铁美

我似乎无法从strokeEndCAShapeLayer属性中删除动画

文档说该属性是animatable默认设置的,但不是默认设置的,我无法查明问题所在。有什么建议在哪里看?

这是我的代码:

class ViewController: UIViewController {

    let circle = CAShapeLayer()

    override func viewDidLoad() {
        super.viewDidLoad()

        // Circle
        circle.fillColor = UIColor.clearColor().CGColor
        circle.strokeColor = UIColor.blackColor().CGColor
        circle.lineWidth = 10
        circle.strokeEnd = 0
        circle.lineJoin = kCALineJoinRound
        circle.path = UIBezierPath(ovalInRect: CGRectMake(60, 140, 200, 200)).CGPath
        circle.actions = ["strokeEnd" : NSNull()]

        // Show Button
        let showButton = UIButton(frame: CGRectMake(40, 40, 240, 40))
        showButton.addTarget(self, action: "showButton", forControlEvents: UIControlEvents.TouchUpInside)
        showButton.setTitle("Show circle", forState: UIControlState.Normal)
        showButton.backgroundColor = UIColor.greenColor()

        // Add to view
        self.view.layer.insertSublayer(circle, atIndex: 1)
        self.view.addSubview(showButton)
    }

    func showButton() {
        circle.strokeEnd = 1
    }
}

CAShape图层笔触结束动画

邓肯

您描述的将图层的strokeEnd动作设置为NSNull的方法有效,但这有点像大锤。当您这样做时,您将永远杀死图层的strokeEnd属性的隐式动画。

如果那是您想要的,那没关系。但是,我倾向于使用DavidRönnqvist在您链接的答案中列出的第二种方法:在CATransaction的begin / commit块内更改图层。这是David的答案的代码(这很出色,就像他的帖子一样)。

[CATransaction begin];
[CATransaction setDisableActions:YES];
// change your property here 
yourShapeLayer.strokeEnd = 0.7;
[CATransaction commit]; // animations are disabled until here...

该代码在Objective-C中。将其翻译为Swift还不错:

CATransaction.begin()
CATransaction.setDisableActions(true)
yourShapeLayer.strokeEnd = 0.7
CATransaction.commit()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我可以在没有su的情况下通过sudo更改root密码吗?

我可以在没有相应 getter 的情况下对 Java setter 使用属性语法吗?

我可以在没有php.ini和.htaccess的情况下更改php会话参数吗?

在Apache NiFi中,我可以在没有属性的情况下评估表达式语言吗?

我可以通过两种方式在没有组件模板的情况下绑定ember中的模型属性吗?

我们可以在没有循环的情况下获得oracle中列表属性的总和吗?

我可以在没有提交按钮或没有按Enter的情况下提交表单吗?

我可以在没有https的情况下将我的应用发布到App Store吗?

我可以在没有 strictNullChecks: false 的情况下解决这个问题吗?

我可以在没有 then() 或 await 的情况下使用 fs promise API 吗?

我可以在没有包装的情况下模拟httpClient.PostAsync()调用吗?

我可以在没有php的情况下将<script>传递到元刷新URL吗?

我们可以在没有catch块的情况下捕获异常吗?

我可以在没有svg文件的情况下创建JSVGCanvas吗?

我可以在没有数据绑定的情况下使用MVVM吗?

我可以在没有任何WooCommerce页面的情况下使用WooCommerce功能吗?

我可以在没有jquery的情况下使用twitter bootstrap吗?

我的路由器可以在没有ISP的情况下与本地设备通信吗?

BeautifulSoup:我可以在没有添加额外标签的情况下进行美化吗?

我可以在没有 ref 和 jnChange 的情况下使用表单输入吗?

我们可以在没有雄辩的ORM的情况下使用Laravel表单绑定吗?

我可以在没有鼠标事件的情况下获得OpenCV中的鼠标位置吗?

我可以在没有 asyncio 的情况下运行 Python 协程吗?

朱莉娅:我可以在没有`makedocs`的情况下运行doctests吗?

我可以在没有任何实例变量的情况下使用decltype吗?

我可以在没有Django的情况下使用芹菜吗

我可以在没有 iPhone 配套应用的情况下构建 Apple Watch 应用吗

我可以在没有推送通知的情况下使用Scial.framework吗?

我可以在没有 __init__ 的情况下访问类吗?- Python