gpt4 book ai didi

swift - CAShapeLayer.isHidden 自动快速应用动画

转载 作者:行者123 更新时间:2023-11-28 10:43:26 25 4
gpt4 key购买 nike

我是 CAShapeLayers 的新手,如果这是一个明显的修复,请原谅我。我试图在 View 向上移动时与 UIScrollView 同步移动一条线,但在 ScrollView 向下移动时保持该线静止。我正在使用委托(delegate)来检测 ScrollView 何时移动,这是我在可见行之间切换的代码。

func scrollViewDidScroll(_ scrollView: UIScrollView){
if(mainScrollView.contentOffset.y < CGFloat(0.0)){
topMainContentViewLine!.isHidden = false
largeRocketImageView!.isHidden = true
topViewLine!.isHidden = true
}else if(mainScrollView.contentOffset.y == CGFloat(0)){
topMainContentViewLine!.isHidden = false
topViewLine!.isHidden = false
}else{
largeRocketImageView!.isHidden = false
topMainContentViewLine!.isHidden = true
topViewLine!.isHidden = false
}
}

当我运行我的应用程序时,我可以很容易地看到这两条线正在淡入和淡出,而不是立即出现和消失。为了比较图像没有动画。关于如何摆脱动画的任何想法?再次感谢!

最佳答案

来自文档:

https://developer.apple.com/documentation/quartzcore/calayer/1410838-ishidden

isHidden

A Boolean indicating whether the layer is displayed. Animatable.

看到“动画”这个词了吗?这是一个相当严格的速记;这意味着当您在不是 UIView 的底层支持层(例如任何独立子层)的层上设置此属性时,动画是默认值。这称为隐式层动画

如果在这些情况下您想要动画属性,您可以通过调用关闭动画

CATransaction.setDisableActions(true)

您可以为特定的显式事务 block (即匹配 begin()commit() 命令之间的所有内容)或为整个隐式事务执行此操作你所有的代码都在运行。

更常见的是,如果您有一个您总是或大部分想要动画的图层,您会将其托管为自定义 UIView 的底层。在那种情况下,设置动画属性将不会动画,如果您需要动画,您可以使用显式 CAAnimation(或 UIView 动画)来获取它。

For comparison the image has no animation

因为 largeRocketImageView 本身不是层;这是一个 View 。

关于swift - CAShapeLayer.isHidden 自动快速应用动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49433244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com