iOS动画之转场动画CATransition

CATransition转场动画

提供层状态间动画转换的对象。

你可以通过创建和添加一个cattransitions对象到一个层的状态之间的过渡。默认转换是交叉渐隐,但是您可以从一组预定义转换指定不同的效果。

如下代码,展示了如何在名为transitioningLayer的CATextLayer的两种状态之间进行转换。当图层第一次创建时,它的背景色设置为红色,它的字符串属性设置为红色。当调用runTransition()函数时,会创建一个新的catranstion对象,并将其添加到transitioningLayer中,层的状态会改变,使其背景颜色为蓝色,其呈现的文本为蓝色。最终的结果是,推动过渡动画从左到右的红色状态和从左进入场景的蓝色状态。

import UIKit
class ViewController: UIViewController {

    let transitioningLayer = CATextLayer()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .white
		transitioningLayer.frame = CGRect(x: 50, y: 100,width: 300, height: 160)
        transitioningLayer.backgroundColor = UIColor.green.cgColor
        transitioningLayer.string = "green"
        runTransition()
		view.layer.addSublayer(transitioningLayer)
    }
    func runTransition() {
        let transition = CATransition()
        transition.duration = 2
        transition.type = .push
        transitioningLayer.add(transition,forKey: "transition")
        // Transition to "blue" state
        transitioningLayer.backgroundColor = UIColor.blue.cgColor
        transitioningLayer.string = "Blue"
    }
}
过渡开始点和结束点
1、startProgress

指示接收器的起始点作为整个转换的一部分。

合法的值是0.0到1.0之间的数字。例如,要在进度的一半开始转换,可以将startProgress设置为0.5。默认值为0。

2、endProgress

指示接收器的端点作为整个转换的一部分。

必须大于等于startProgress,且不能大于1.0。如果endProgress小于startProgress,则行为未定义。默认值为1.0。

过渡性质
1、type

指定预定义转换类型。

如果在筛选器属性中指定了自定义转换,则忽略此属性。默认为fade。

  • fade 图层的内容会随着可见或隐藏而淡入。
  • moveIn 该层的内容滑动到任何现有内容的位置上。公共转换子类型与此转换一起使用。
  • push 该层的内容在滑动到合适的位置时推动任何现有的内容。公共转换子类型与此转换一起使用。
  • reveal 该层的内容按照转换子类型指定的方向逐渐显示出来。subtype与此转换一起使用。
2、subtype

指定一个可选的子类型,该子类型指示预定义的基于运动的转换的方向。

默认为nil。如果在筛选器属性中指定了自定义转换,则忽略此属性。

  • fromRight 转换从图层的右侧开始。
  • fromLeft 转换从图层的左侧开始。
  • fromTop 转换从图层的上侧开始。
  • fromBottom 转换从图层的下侧开始。
自定义转换过滤器
filter

提供转换的可选核心图像过滤器对象。
这个属性在iOS中不被支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值