視圖轉(zhuǎn)場動(dòng)畫與動(dòng)畫封裝

自定義視圖切換動(dòng)畫

需要先了解下面的效果對應(yīng)的代碼
宏(系統(tǒng)里面直接可以調(diào)用的)
kCATransitionFade 交叉淡化過渡
kCATransitionMoveIn 新視圖移到舊視圖上面
kCATransitionPush 新視圖把舊視圖推出去
kCATransitionReveal 將舊視圖移開,顯示下面的新視圖

字符串(也是系統(tǒng)的颂龙,但是是字符串喜最,要加“”使用)
pageCurl 向上翻一頁
pageUnCurl 向下翻一頁
rippleEffect 滴水效果
suckEffect 收縮效果再扭,如一塊布被抽走
cube 立方體效果
oglFlip 上下翻轉(zhuǎn)效果
cameraIrisHollowOpen
cameraIrisHollowClose

動(dòng)畫方向
kCATransitionFromRight;
kCATransitionFromLeft(默認(rèn)值)
kCATransitionFromTop贮庞;
kCATransitionFromBottom

轉(zhuǎn)場動(dòng)畫類代碼

import UIKit

public enum TransitionType:String{
    ///交叉淡化過度
    case Fade = "fade"
    ///新視圖移到就是圖上邊
    case MoveIn = "moveIn"
    ///新視圖把舊視圖推出去
    case Push = "push"
    ///將舊視圖移開,顯示下面的新視圖
    case Reveal = "reveal"
    ///向上翻一頁 
    case PageCurl = "pageCurl"
    ///向下翻一頁
    case PageUnCurl = "pageUnCurl"
    ///滴水效果
    case RippleEffect = "rippleEffect"
    ///收縮效果示惊,如一塊布被抽走
    case SuckEffect = "suckEffect"
    ///立方體效果
    case Cube = "cube"
    ///上下翻轉(zhuǎn)效果
    case OglFlip = "oglFlip"
    
}

public enum TransitionDirection:String{
    ///從右邊
    case FromRight = "fromRight"
    ///從左邊
    case FromLeft = "fromLeft"
    ///從上邊
    case FromTop = "fromTop"
    ///從下邊
    case FromBottom = "fromBottom"
}

extension UIView{
    /**
     添加轉(zhuǎn)場動(dòng)畫
     - parameter durection:動(dòng)畫時(shí)間
     - parameter type:動(dòng)畫類型
     - parameter direction:動(dòng)畫方向
     */
    public func addTransitionAnimation(durection:Double,type: TransitionType,direction: TransitionDirection){
        //創(chuàng)建動(dòng)畫對象
        let animation = CATransition()
        //設(shè)置動(dòng)畫時(shí)間
        animation.duration = durection
        //設(shè)置動(dòng)畫類型
        animation.type = type.rawValue
        //設(shè)置動(dòng)畫方向
        animation.subtype = direction.rawValue
        //添加動(dòng)畫
        self.window?.layer.addAnimation(animation, forKey: nil)
    }
}

應(yīng)用

  • 創(chuàng)建window
import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        
        self.window  = UIWindow(frame: UIScreen.mainScreen().bounds)
        let root = FirstViewController()
        window?.rootViewController = root
        
        return true
    }
}
  • 創(chuàng)建第一個(gè)視圖控制器
import UIKit

class FirstViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = UIColor.greenColor()
        let btn = UIButton(frame: CGRectMake(100,100,100,50))
        btn.setTitle("下一頁", forState: .Normal)
        self.view.addSubview(btn)
        btn.addTarget(self, action: "btnAction", forControlEvents: .TouchUpInside)
        // Do any additional setup after loading the view.
    }

}
extension FirstViewController{
    
    func btnAction(){
        
        //添加轉(zhuǎn)場動(dòng)畫(不使用封裝好的方法)
/*
        //a.創(chuàng)建轉(zhuǎn)場動(dòng)畫對象
        let animation = CATransition()
        //b.設(shè)置動(dòng)畫轉(zhuǎn)場時(shí)間
        animation.duration = 2
        //c.設(shè)置動(dòng)畫類型
        //"rippleEffect", kCATransitionFade, kCATransitionMoveIn......
        animation.type = "rippleEffect"
        //d.設(shè)置動(dòng)畫方向
        animation.subtype = kCATransitionFromRight
        //e.添加動(dòng)畫
        //可以通過任何已經(jīng)顯示在界面上的視圖去拿到當(dāng)前應(yīng)用程序window(主窗口)
        self.view.window?.layer.addAnimation(animation, forKey: nil)
*/
        //使用自己封裝的方法
        self.view.addTransitionAnimation(0.2, type: TransitionType.Push, direction: TransitionDirection.FromTop)
        
        let second = SecondViewController()
        presentViewController(second, animated: true, completion: nil)
    }
}
  • 創(chuàng)建需要跳轉(zhuǎn)的第二個(gè)視圖控制器
import UIKit

class SecondViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        self.view.backgroundColor = UIColor.orangeColor()
        let btn = UIButton(frame: CGRectMake(100,100,100,50))
        btn.setTitle("上一頁", forState: .Normal)
        self.view.addSubview(btn)
        btn.addTarget(self, action: "btnAction", forControlEvents: .TouchUpInside)
    }
}

extension SecondViewController{
    func btnAction() {
        //返回上一頁
        self.dismissViewControllerAnimated(true, completion: nil)
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子垄琐,更是在濱河造成了極大的恐慌,老刑警劉巖经柴,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件狸窘,死亡現(xiàn)場離奇詭異,居然都是意外死亡坯认,警方通過查閱死者的電腦和手機(jī)翻擒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來牛哺,“玉大人陋气,你說我怎么就攤上這事∫螅” “怎么了巩趁?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長淳附。 經(jīng)常有香客問我议慰,道長,這世上最難降的妖魔是什么燃观? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任褒脯,我火速辦了婚禮便瑟,結(jié)果婚禮上缆毁,老公的妹妹穿的比我還像新娘。我一直安慰自己到涂,他們只是感情好脊框,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著践啄,像睡著了一般浇雹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上屿讽,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天昭灵,我揣著相機(jī)與錄音,去河邊找鬼伐谈。 笑死烂完,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的诵棵。 我是一名探鬼主播抠蚣,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼履澳!你這毒婦竟也來了嘶窄?” 一聲冷哼從身側(cè)響起怀跛,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎柄冲,沒想到半個(gè)月后吻谋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡羊初,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年滨溉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片长赞。...
    茶點(diǎn)故事閱讀 40,675評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡晦攒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出得哆,到底是詐尸還是另有隱情脯颜,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布贩据,位于F島的核電站栋操,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏饱亮。R本人自食惡果不足惜矾芙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望近上。 院中可真熱鬧剔宪,春花似錦、人聲如沸壹无。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽斗锭。三九已至地淀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間岖是,已是汗流浹背帮毁。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留豺撑,地道東北人烈疚。 一個(gè)月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像前硫,于是被迫代替她去往敵國和親胞得。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容

  • 【iOS開發(fā)】30多個(gè)iOS常用動(dòng)畫,帶詳細(xì)注釋 (2014-04-20 14:55:54)轉(zhuǎn)載▼標(biāo)簽: ios開...
    Fun箱Dao柜閱讀 1,552評論 0 50
  • 在iOS中隨處都可以看到絢麗的動(dòng)畫效果阶剑,實(shí)現(xiàn)這些動(dòng)畫的過程并不復(fù)雜跃巡,今天將帶大家一窺iOS動(dòng)畫全貌。在這里你可以看...
    F麥子閱讀 5,115評論 5 13
  • Core Animation基礎(chǔ) Core Animation 利用了硬件加速和架構(gòu)上的優(yōu)化來實(shí)現(xiàn)快速渲染和實(shí)時(shí)動(dòng)...
    獨(dú)木舟的木閱讀 1,542評論 0 3
  • 6月1日第一天上課的功課《Just One》 坑爹的圓珠筆不夠流暢牧愁,畫葉子時(shí)改成了特細(xì)記號筆素邪,還是不好用…… 6....
    Rainbow_金閱讀 626評論 2 0
  • 那是一個(gè)白白凈凈的 兩腳獸 我只有一張她背影的照片 我去勾搭她 她被我勾搭 我在七月的最后一天表白 從此八月再?zèng)]回來
    孤高之泥鰍閱讀 198評論 0 0