首页 > 其他分享 >swift--动画效果

swift--动画效果

时间:2023-08-22 15:37:08浏览次数:36  
标签:动画 nil beginAnimations -- commitAnimations tile swift UIView

一、for循环创建4*4个view,然后对立面的所有view进行动画,这里列集中动画的效果:

1,旋转动画

for tile in backgrounds{
            
            //现将数字块大小职位原始尺寸的1/10
            tile.layer.setAffineTransform(CGAffineTransform(scaleX: 0.1,y: 0.1))
            
            //设置动画效果,动画时间长度1秒
            UIView.animate(withDuration: 1, delay: 0.01, options: [], animations: { 
                
            }, completion: { (finished) in
               
                UIView.animate(withDuration: 1, animations: { 
                    //完成动画时,数字块复原
                    tile.layer.setAffineTransform(CGAffineTransform.identity)
                })
                
            })
            
        }

2,不透明到透明的效果

for tile in backgrounds {
            
            tile.alpha = 0
            
            //设置动画效果,动画时间长度1秒
            UIView.animate(withDuration: 1, delay: 0.01, options: [.curveEaseInOut], animations: {
                
            }, completion: { (finished) in
                UIView.animate(withDuration: 1, animations: { 
                    tile.alpha = 1
                })
            })
            
        }

3,从小到大的效果

for tile in backgrounds {
            
            //现将数字快大小之前原始尺寸的1/10
            tile.layer.setAffineTransform(CGAffineTransform(scaleX:0.1,y:0.1))
            
            //设置动画效果,动画时间长度1秒
            UIView.animate(withDuration: 1, delay: 0.01, options: [], animations: { 
                tile.layer.setAffineTransform(CGAffineTransform(scaleX:1,y:1))
            }, completion: { (finished) in
                UIView.animate(withDuration: 0.08, animations: { 
                    tile.layer.setAffineTransform(CGAffineTransform.identity)
                })
            })
            
        }

记录下三种动画效果

 

二、使用beginAnimations和commitAnimations方法来实现动画

beginAnimations:此方法开始一个动画快,调用commitAnimations结束一个动画块,并且动画块是允许嵌套的。

commitAnimations:此方法用于结束一个动画块,动画时在一个独立的线程中运行的,动画在生效时,所用应用程序不会中断。

beginAnimations和commitAnimations中间的代码中,我们可以设置各种动画的属性,比如持续时间,使用哪算阈值的动画效果等。

1)淡入、淡出、移动、改变大小动画

func animationAction() {
        //淡出动画
        UIView.beginAnimations(nil, context: nil)
        UIView.setAnimationDuration(2.0)
        imgV.alpha = 0.0
        UIView.commitAnimations()
        
        //淡入动画
        UIView.beginAnimations(nil, context: nil)
        UIView.setAnimationDuration(2.0)
        imgV.alpha = 1.0
        UIView.commitAnimations()
        
        //移动动画
        UIView.beginAnimations(nil, context: nil)
        UIView.setAnimationDuration(2.0)
        imgV.center = CGPoint(x:250,y:250)
        UIView.commitAnimations()
        
        //大小调整动画
        UIView.beginAnimations(nil, context: nil)
        UIView.setAnimationDuration(2.0)
        imgV.frame = CGRect(x:100,y:180,width:50,height:50)
        UIView.commitAnimations()
    }

 

UIViewAnimationTransition定义了 5 种过渡动画类型:

  • none:无过渡动画效果
  • flipFromLeft:从左侧向右侧翻转
  • flipFromRight:从右侧向左侧翻转
  • curlUp:向上卷数翻页
  • curlDown:向下翻页

 代码如下:

//翻页动画 一 向左翻页
        UIView.beginAnimations(nil, context: nil)
        UIView.setAnimationDuration(2.5)
        UIView.setAnimationTransition(.curlUp, for: self.view1!, cache: true)
        self.view.exchangeSubview(at: 1, withSubviewAt: 0)
        UIView.commitAnimations()
        
        //翻页动画 二 旋转
        UIView.beginAnimations("animation", context: nil)
        UIView.setAnimationDuration(2.0)
        UIView.setAnimationCurve(.easeInOut)
        UIView.setAnimationTransition(.flipFromLeft, for: self.view2!, cache: false)
        self.view.exchangeSubview(at: 1, withSubviewAt: 0)
        UIView.commitAnimations()

跳转到其他页面的操作:

let EleventhVC = EleventhViewController()
        let windows = UIApplication.shared.delegate?.window
        let nav = UINavigationController(rootViewController:EleventhVC)

        UIView.beginAnimations(nil, context: nil)
        UIView.setAnimationDuration(2.0)
        UIView.setAnimationCurve(.easeInOut)
        UIView.setAnimationTransition(.curlUp, for: windows!!, cache: true)
        UIView.commitAnimations()
        windows??.rootViewController = nav

主界面做动画:

UIView.beginAnimations(nil, context: nil)
        UIView.setAnimationDuration(2.0)
        UIView.setAnimationCurve(.easeOut)
        UIView.setAnimationTransition(.curlDown, for: self.view, cache: false)
        UIView.commitAnimations()

 


作者:稻草人11223

标签:动画,nil,beginAnimations,--,commitAnimations,tile,swift,UIView
From: https://blog.51cto.com/u_13188203/7190223

相关文章

  • swift--使用 is 和 as 操作符来实现类型检查和转换 / AnyObject与Any的区别
    声明几个类://动物类classAnimal{}//陆地动物类classterricole:Animal{}//海洋动物类classSeaAnimals:Animal{}1,is用来做类型检查letcat=terricole()letfish=SeaAnimals()letarr=[cat,fish]foranima......
  • ios开发之--pop到指定页面
    1推出到根视图控制器[self.navigationControllerpopToRootViewControllerAnimated:YES];2推出到指定的视图控制器 for(UIViewController*controllerinself.navigationController.viewControllers){if([controllerisKindOfClass:[AViewControllerclass]]){......
  • 代码简洁之道:对象转换神器MapStruct
    在我们日常开发的程序中,为了各层之间解耦,一般会定义不同的对象用来在不同层之间传递数据,比如xxxDTO、xxxVO、xxxQO,当在不同层之间传输数据时,不可避免地经常需要将这些对象进行相互转换。今天给大家介绍一个对象转换工具MapStruct,代码简洁安全、性能高,强烈推荐。MapStruct简介MapSt......
  • ios开发之--ios11适配:TableView的heightForHeaderInSection设置高度无效/UISearchBar
    更新到ios11,然后使用x-code9运行项目,发现tableview的-(CGFloat)tableView:(UITableView*)tableViewheightForHeaderInSection:(NSInteger)section方法不走,所以页面也华丽丽的变成了一排的cell,通过查看文档和资料,原来是ios11默认开启self-sizing,把这个属性关系即可,具体代码如下:sel......
  • 用案例带你认识决策树,解锁洞察力
    本文分享自华为云社区《【机器学习|决策树】利用数据的潜力:用决策树解锁洞察力》,作者:计算机魔术师。决策树1.1分类决策树是一种基于树形结构的分类模型,它通过对数据属性的逐步划分,将数据集分成多个小的决策单元。每个小的决策单元都对应着一个叶节点,在该节点上进行分类决......
  • ios开发之--NSString和NSArray互转
    将string字符串转换为array数组NSArray*array=[StrcomponentsSeparatedByString:@","];//分隔符逗号将array数组转换为string字符串 NSString*tempString=[mutableArraycomponentsJoinedByString:@","];//分隔符逗号作者:稻草人11223......
  • swift--触摸(UITouch)事件(点击,移动,抬起)
    触摸事件:UITouch:一个手机第一次点击屏幕,会形成一个UITouch对象,知道离开销毁。表示触碰。UITouch对象能表明当前手指触碰的屏幕位置、状态,状态分为开始触碰、移动、离开。具体方法介绍如下:1.overridefunctouchesBegan(_touches:Set<UITouch>,withevent:UIEvent?)通知调用者当......
  • ios开发之--使用toolbar调整item之间的间隔
    toolbar的item有很多种样式,其实经常使用的就几种,UIBarButtonSystemItemFixedSpace木棍:可以理解为固定的长度UIBarButtonSystemItemFlexibleSpace 弹簧:可以理解为弹性的长度 UIBarButtonItem有两个barbutton的格式  添加到toolbaritems=@[木棍,按钮,弹簧,按钮,木棍];木棍是固定长度......
  • java实现大文件上传示例
    ​ 一、功能性需求与非功能性需求要求操作便利,一次选择多个文件和文件夹进行上传;支持PC端全平台操作系统,Windows,Linux,Mac支持文件和文件夹的批量下载,断点续传。刷新页面后继续传输。关闭浏览器后保留进度信息。支持文件夹批量上传下载,服务器端保留文件夹层级结构,服务器端......
  • swift--添加新手引导页
    swift和oc逻辑上都是一样的,只是写法不一样,可以使用一个view,也可以使用一个viewController,两种都可以的,使用view注意初始化的时候给他一个frame,vc的话,直接在本控制器里面写控制即可! 1,创建一个vc,然后在里面初始化一个scrollview,升值contentsize为3*页面宽度,然后添加图片,最后可以实......