仿QQ侧滑边栏
来源:互联网 发布:2015年酒店行业数据 编辑:程序博客网 时间:2024/06/03 20:47
//
// ViewController.swift
// LeftMenu
//
// Created by Lucky on 16/3/28.
// Copyright © 2016年 1024. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
let center:UIViewController
let left:UIViewController
var percent:CGFloat =0.84
privatevar screenWith:CGFloat{
return UIScreen.mainScreen().bounds.width
}
privatevar screenHeight:CGFloat{
return UIScreen.mainScreen().bounds.height
}
privatevar centerView:UIView {
return center.view
}
privatevar leftView:UIView {
return left.view
}
privatevar leftViewFrame:CGRect {
return CGRect(x: -percent*screenWith/2, y: 0, width:percent*screenWith, height:screenHeight)
}
privatevar centerFinalFrame:CGRect {
return CGRect(x:percent*screenWith, y:0, width:screenWith, height:screenHeight)
}
privatevar gesture:UIScreenEdgePanGestureRecognizer!
privatevar gesturePan:UIPanGestureRecognizer!
init(center:UIViewController, left:UIViewController){
self.center = center
self.left = left
super.init(nibName:nil, bundle:nil)
}
requiredinit?(coder aDecoder:NSCoder) {
fatalError("init(coder:) has not been implemented")
}
overridefunc viewDidLoad() {
super.viewDidLoad()
gesture = UIScreenEdgePanGestureRecognizer(target:self, action:#selector(ViewController.pan(_:)))
gesture.edges = .Left
gesturePan = UIPanGestureRecognizer(target:self, action:#selector(ViewController.pan(_:)))
gesturePan.enabled = false
centerView.addGestureRecognizer(gesture)
centerView.addGestureRecognizer(gesturePan)
addChildViewController(center)
self.view.addSubview(centerView)
center.didMoveToParentViewController(self)
addChildViewController(left)
left.view.frame =leftViewFrame
self.view.addSubview(leftView)
self.view.sendSubviewToBack(leftView)
left.didMoveToParentViewController(self)
}
func pan(ges:UIPanGestureRecognizer){
switch ges.state {
case .Began:
break
case .Changed:
let p = ges.translationInView(self.centerView)
if p.x +centerView.frame.origin.x <screenWith*percent && p.x +centerView.frame.origin.x >=0{
centerView.center.x += p.x
left.view.center.x += p.x/2
ges.setTranslation(CGPointZero, inView:centerView.superview)
}
case .Ended:
ifcenterView.frame.origin.x <2*screenWith/5 {
toggle(true)
}
else{
toggle(false)
}
default:
break
}
}
func toggle(bool:Bool){
let second =Double(centerView.frame.origin.x/screenWith)
if bool{
UIView.animateWithDuration(second, animations: {
self.centerView.frame =self.view.bounds
self.leftView.frame =self.leftViewFrame
})
gesturePan.enabled =false
gesture.enabled =true
}
else{
UIView.animateWithDuration(1-second, animations: {
self.centerView.frame = self.centerFinalFrame
self.leftView.frame =CGRect(origin:CGPointZero, size:self.leftViewFrame.size)
})
gesture.enabled =false
gesturePan.enabled =true
}
}
}
class CenterViewController: UIViewController {
overridefunc viewDidLoad() {
super.viewDidLoad()
view.backgroundColor =UIColor.redColor()
print(1)
}
}
class LeftViewController: UIViewController {
overridefunc viewDidLoad() {
super.viewDidLoad()
view.backgroundColor =UIColor.yellowColor()
print(2)
}
}
- 仿QQ侧滑边栏
- 仿QQ导航菜单
- 仿QQ导航菜单
- 仿QQ窗口代码
- 仿QQ导航菜单
- 仿QQ下拉菜单
- 仿QQ界面
- 仿QQ聊天室【方案】
- C#仿QQ皮肤
- 仿QQ导航菜单
- 仿QQ广告栏
- flex 仿QQ
- flex 仿QQ(一)
- 仿qq聊天程序设计
- 仿腾讯QQ界面
- Android仿QQ空间
- Android仿QQ登陆
- 仿qq列表
- 大话设计模式—状态模式
- ADS1247寄存器中文翻译
- 一对多、对多一、批量操作
- poj 2985(并查集+线段树求K大数)
- 第五周项目3(2)
- 仿QQ侧滑边栏
- 第5周-项目4-长方柱类
- iOS UITableView3
- 双向循环链表代码实践
- 百度切片工具新功能:添加麻点,点击弹出图文组合信息窗口
- Android案例二,打招呼
- yum软件安装目录解释
- linux环境下Matlab中socket网络功能的实现
- nyoj82 迷宫寻宝(一)(DFS 推荐看看)