Swift UIview的 层次交换 和部分动画的详解

Swift UIview的 层次交换 和部分动画的详解,第1张

概述// //  ViewController.swift //  Swift_004 // //  Created by 周双建 on 15/11/30. //  Copyright © 2015年 周双建. All rights reserved. // //Swift  的多个View的界面交换和单个View的动画 import UIKit class ViewController: UIVie

//

// VIEwController.swift

// Swift_004

// Created by 周双建 on 15/11/30.

// copyright © 2015 周双建. All rights reserved.

//Swift 的多个VIEw的界面交换和单个VIEw的动画

import UIKit


class VIEwController: UIVIEwController {


overrIDe func vIEwDIDLoad() {

super.vIEwDIDLoad()

//创建第一个VIEw

let VIEw1 = UIVIEw(frame: CGRectMake(10,10,100,100))

VIEw1.backgroundcolor = UIcolor.redcolor()

self.vIEw.addSubvIEw(VIEw1)

//创建第二个VIEw

let VIEw2 = UIVIEw(frame: CGRectMake(110,110,170)"> VIEw2.backgroundcolor = UIcolor.graycolor()

self.vIEw.addSubvIEw(VIEw2)

//创建第三个VIEw

let VIEw3 = UIVIEw(frame: CGRectMake(120,120,170)"> VIEw3.backgroundcolor = UIcolor.greencolor()

self.vIEw.addSubvIEw(VIEw3)

/**************************************************************/

//vIEw 的前后交换

// 1、把VIEw 移动到所有视图的最上面

self.vIEw.bringSubvIEwToFront(VIEw1)

// 2、把VIEw移动到所有视图的最下面

self.vIEw.sendSubvIEwToBack(VIEw3)

// 3exchangeSubvIEwAtIndex(<#T##index1: Int##Int#>,withSubvIEwAtIndex: <#T##Int#>) 这是Index1 的子视图和下标 index2 的下标交换

self.vIEw.exchangeSubvIEwAtIndex(0,withSubvIEwAtIndex:2)

print(self.vIEw.subvIEws)

//注意 0 2 交换 是没有效果的 这是因为 下标为2 的不是VIEw

/* 打印结果

1[<UIVIEw: 0x7f932acb74b0; frame = (100 100; 100 100); layer = <CALayer: 0x7f932acb7620>>,

***************************************************

2<_UILayoutGuIDe: 0x7f932acb5a40; frame = (0 0; 0 0); hIDden = YES; layer = <CALayer: 0x7f932acb5710>>,0)"> *******************************************************

3<_UILayoutGuIDe: 0x7f932ad10d30; frame = (0 0; 0 0); hIDden = YES; layer = <CALayer: 0x7f932ad0d8d0>>,0)"> 4<UIVIEw: 0x7f932acb79e0; frame = (110 110; 100 100); layer = <CALayer: 0x7f932acb7b50>>,0)"> 5<UIVIEw: 0x7f932acb7c40; frame = (120 120; 100 100); layer = <CALayer: 0x7f932acb7db0>>]

*/

/**********************************************************/

// 下面 我们进行动画

// 先将后两个VIEw隐藏

VIEw2.hIDden = true

VIEw3.hIDden = true

//这是关键帧动画的添加

UIVIEw.animateKeyframesWithDuration(4,delay: 1,options: UIVIEwKeyframeAnimationoptions.CalculationModediscrete,animations: { () -> VoID in

//1

VIEw1.frame = CGRectMake(100, 100,100)

}) { (finished) -> VoID in

//3

VIEw1.transform = CGAffinetransformMakeScale(0.3, 0.2)

}

/*

1.常规动画属性设置(可以同时选择多个进行设置)

UIVIEwAnimationoptionLayoutSubvIEws:动画过程中保证子视图跟随运动。

UIVIEwAnimationoptionAllowUserInteraction:动画过程中允许用户交互。

UIVIEwAnimationoptionBeginFromCurrentState:所有视图从当前状态开始运行。

UIVIEwAnimationoptionRepeat:重复运行动画。

UIVIEwAnimationoptionautoreverse :动画运行到结束点后仍然以动画方式回到初始点。

UIVIEwAnimationoptionOverrIDeinheritedDuration:忽略嵌套动画时间设置。

UIVIEwAnimationoptionOverrIDeinheritedOptions :不继承父动画设置或动画类型。

2.动画模式设置(同前面关键帧动画动画模式一一对应,可以从其中选择一个进行设置)

UIVIEwKeyframeAnimationoptioncalculationModelinear:连续运算模式。

UIVIEwKeyframeAnimationoptioncalculationModediscrete :离散运算模式。

UIVIEwKeyframeAnimationoptioncalculationModePaced:均匀执行运算模式。

UIVIEwKeyframeAnimationoptioncalculationModeCubic:平滑运算模式。

UIVIEwKeyframeAnimationoptioncalculationModeCubicPaced:平滑均匀运算模式。

// 动画持续两秒

UIVIEw.animateWithDuration(2) { () -> VoID in

//2

VIEw1.transform = CGAffinetransformMakeScale(1,1)

VIEw1.frame = CGRectMake(220,100)

}

/*

以上两个动画的运行顺序是 1 ———— 2————————3

/**********************************************************/


UIVIEw.animateWithDuration(4,options: UIVIEwAnimationoptions.AllowAnimatedContent,animations: { () -> VoID in

VIEw1.frame = CGRectMake(120,100)

}) { (finished) -> VoID in

VIEw1.frame = CGRectMake(120, 50,100)


}

/**********************************************************/

/*

usingSpringWithdamPing:d簧动画的阻尼值,也就是相当于摩擦力的大小,该属性的值从0.01.0之间,越靠近0,阻尼越小,d动的幅度越大,反之阻尼越大,d动的幅度越小,如果大道一定程度,会出现d不动的情况。

initialSpringVeLocity:d簧动画的速率,或者说是动力。值越小d簧的动力越小,d簧拉伸的幅度越小,反之动力越大,d簧拉伸的幅度越大。这里需要注意的是,如果设置为0,表示忽略该属性,由动画持续时间和阻尼计算动画的效果。

*/

UIVIEw.animateWithDuration(10,usingSpringWithdamPing: 1,initialSpringVeLocity: 1,options: UIVIEwAnimationoptions.CurveEaseInOut,animations: { () -> VoID in

VIEw1.frame = CGRectMake(150,100)


}) { ( finished) -> VoID in

VIEw1.frame = CGRectMake(120, 300,100)

}

/**********************************************************/

// Do any additional setup after loading the vIEw,typically from a nib.

}


overrIDe func dIDReceiveMemoryWarning() {

super.dIDReceiveMemoryWarning()

// dispose of any resources that can be recreated.

}



}

总结

以上是内存溢出为你收集整理的Swift UIview的 层次交换 和部分动画的详解全部内容,希望文章能够帮你解决Swift UIview的 层次交换 和部分动画的详解所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1082218.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存