先上一張圖片
今天又學(xué)習(xí)到了一個(gè)新的動(dòng)畫效果搏熄,就趕快拿出來和大家分享啦谱秽。
首先,將我Demo中的LLSlideMenu文件夾拖入到你的工程中耙蔑。
然后在橋文件中import
#import "LLSlideMenu.h"
ViewController中調(diào)用
//
// ViewController.swift
// Swift-彈性側(cè)滑菜單
//
// Created by ibokan on 16/7/27.
// Copyright ? 2016年 張宇. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
/*創(chuàng)建一個(gè)菜單*/
var slideMenu:LLSlideMenu!
/*設(shè)置全屏側(cè)滑手勢(shì)*/
var leftSwipe:UIPanGestureRecognizer!
var percent:UIPercentDrivenInteractiveTransition!
/*菜單按鈕監(jiān)聽*/
@IBAction func menu(sender: UIButton) {
if (slideMenu.ll_isOpen) {
slideMenu.ll_closeSlideMenu()
}else{
slideMenu.ll_openSlideMenu()
}
}
override func viewDidLoad() {
super.viewDidLoad()
/*初始化*/
slideMenu = LLSlideMenu()
/*菜單添加到視圖上*/
self.view.addSubview(slideMenu)
/*設(shè)置菜單寬度*/
slideMenu.ll_menuWidth = 200
/*設(shè)置菜單背景色*/
slideMenu.ll_menuBackgroundColor = UIColor(red: 102/255, green: 153/255, blue: 204/255, alpha: 1)
/*設(shè)置彈力和速度见妒,默認(rèn)的是20,15甸陌,60*/
slideMenu.ll_springDamping = 20 //阻力
slideMenu.ll_springVelocity = 15 //速度
slideMenu.ll_springFramesNum = 60 //關(guān)鍵幀數(shù)量
/*
* Menu添加子View
*/
let img = UIImageView(frame: CGRectMake(50, 40, 80, 80))
img.image = UIImage(named: "002")
img.layer.masksToBounds = true
img.layer.cornerRadius = 40
img.layer.borderWidth = 1
img.layer.borderColor = UIColor.whiteColor().CGColor
slideMenu.addSubview(img)
let label = UILabel(frame: CGRectMake(30, 140, 150, 400))
label.text = "這是第一行菜單\n\n這是第二行菜單\n\n這是第三行菜單\n\n這是第四行菜單\n\n這是第五行菜單\n\n這是第六行菜單\n\n這是第七行菜單\n\n這是第八行菜單\n\n這是第九行菜單\n\n這是第十行菜單"
label.textColor = UIColor.whiteColor()
label.numberOfLines = 0
slideMenu.addSubview(label)
/*
* 添加全屏手勢(shì)
*/
self.leftSwipe = UIPanGestureRecognizer(target: self, action: #selector(ViewController.swipeLeftHandle(_:)))
self.leftSwipe.maximumNumberOfTouches = 1
self.view.addGestureRecognizer(leftSwipe)
}
/**
* 全局側(cè)滑手勢(shì)監(jiān)聽
*/
func swipeLeftHandle(recognizer:UIScreenEdgePanGestureRecognizer){
//如果菜單已經(jīng)打開就禁止滑動(dòng)
if(slideMenu.ll_isOpen){
return
}
//計(jì)算手指滑的物理距離(滑了多遠(yuǎn)须揣,與起始位置無關(guān))
var progress:CGFloat = recognizer.translationInView(self.view).x / (self.view.bounds.size.width * 1.0)
//把這個(gè)百分比限制在 0~1 之間
progress = min(1.0, max(0.0, progress))
//當(dāng)手勢(shì)剛剛開始,我們創(chuàng)建一個(gè) UIPercentDrivenInteractiveTransition 對(duì)象
if(recognizer.state == UIGestureRecognizerState.Began){
self.percent = UIPercentDrivenInteractiveTransition()
}else if(recognizer.state == UIGestureRecognizerState.Changed){
//當(dāng)手慢慢劃入時(shí)钱豁,我們把總體手勢(shì)劃入的進(jìn)度告訴 UIPercentDrivenInteractiveTransition 對(duì)象耻卡。
self.percent.updateInteractiveTransition(progress)
slideMenu.ll_distance = recognizer.translationInView(self.view).x
}else if(recognizer.state == UIGestureRecognizerState.Cancelled || recognizer.state == UIGestureRecognizerState.Ended){
//當(dāng)手勢(shì)結(jié)束,我們根據(jù)用戶的手勢(shì)進(jìn)度來判斷過渡是應(yīng)該完成還是取消并相應(yīng)的調(diào)用 finishInteractiveTransition 或者 cancelInteractiveTransition 方法.
if(progress > 0.4){
self.percent.finishInteractiveTransition()
slideMenu.ll_openSlideMenu()
}else{
self.percent.cancelInteractiveTransition()
slideMenu.ll_closeSlideMenu()
}
self.percent = nil
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
喜歡的話牲尺,記得點(diǎn)擊上方的關(guān)注按鈕卵酪!