/*
《Swift UIViewController 的切换跳转动画和 UIToolBar 的详细使用》
*/
/*
视图控制器间的跳转,在现在开发中还占有很大分量。但是,许多App 却不适用控制器间的跳转动画,今天我们还是要学习的。还有,在开发过程中,被我们忽视的工具栏的使用说明。
*/
// Created by 周双建 on 15/12/6.
// Copyright © 2015年 周双建. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//设置颜色
self.view.backgroundColor = UIColor.whiteColor()
//要实现,一个控制器跳转到另一个控制器,我们首先创建一个驱动事件的按钮
let Btn_ZSJ = UIButton(type: UIButtonType.Custom) as UIButton
Btn_ZSJ.frame = CGRectMake(40, 100, self.view.frame.size.width-80, 40)
Btn_ZSJ.setTitleColor(UIColor.blackColor(), forState: UIControlState.Normal)
Btn_ZSJ.setTitle("跳转第二个", forState: UIControlState.Normal)
Btn_ZSJ.addTarget(self, action: "Jamp", forControlEvents: UIControlEvents.TouchUpInside)
self.view.addSubview(Btn_ZSJ)
/****************************************************************/
//下面我们介绍 UIToolBar 的详细使用和自定义
//目前,Xcode 默认在创建控制器的时候,时将其隐藏的,现在我们要将其显示
//UIToolBar 的显示 (注意:系统要以导航控制器管理状态下显示)
self.navigationController?.toolbarHidden = false
/***************************************************************/
//要在工具栏上添加按钮 3 个以不同方式创建的按钮
//第一种
let item_one = UIBarButtonItem(title: "分享", style: UIBarButtonItemStyle.Done, target: self, action: "itemone")
//第二种
let item_two = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Pause, target: self, action: "itemtwo")
//第三种
let item_three = UIBarButtonItem(image: UIImage(named: "ssd.png"), style: UIBarButtonItemStyle.Plain, target: self, action: "itemtwo")
/*
* 以上三种创建 UIBarButtonitem 的方式
*/
// 将3个按钮,添加到工具栏上
self.setToolbarItems([item_one,item_two,item_three], animated: true)
/*
运行效果,发现3个按钮,都挤在一块了,非常的不好看,现在,我们要求三个按钮不要在一起,而是等间距的分开,那怎么解决呢???继续向下看LOOK Down
*/
// 我要创建一个 UIBarButtonItem 的另一个控制对象
let sepace = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: self, action: nil)
//再将 五个按钮 加入到工具栏中 ,现在可定会有人发出疑问,为什么是五个呢,请往下看
self.setToolbarItems([item_one,sepace,item_two,sepace,item_three], animated: true)
/*
运行结果发现,确实,三个按钮等间距分开,看了上面,你就明白为什么是5个咯
*/
/******************************************************************/
// 由于现在的需求千变万化,所以系统的工具栏,就不能满足我们的需求,那么我们怎么办?那就自定义一个楼
// 首先 我们已经 使用了系统的工具栏 我们要将其隐藏
self.navigationController?.toolbarHidden = true
//然后,我们要创建3个按钮 ,就是用上 面的3个了
// 创建一个 UIToolBar 的对象
let Tool_ZSJ = UIToolbar(frame: CGRectMake(10,200,self.view.frame.size.width-20 ,44))
//再将创建的 5个按钮添加到 Tool_ZSJ 上面
Tool_ZSJ.setItems([item_one,sepace,item_two,sepace,item_three], animated: true)
//然后,再将工具栏添加到 主控制器的View上面
self.view.addSubview(Tool_ZSJ)
// Do any additional setup after loading the view, typically from a nib.
}
/****************************************************************/
//实现第一个控制器向第二个控制器跳转
func Jamp(){
//获取跳转对象
let TVC = TwoViewController()
//设置跳转动画
/*
public enum UIModalTransitionStyle : Int {
case CoverVertical 效果是 第二个控制器从下面弹出的效果
case FlipHorizontal 效果是 中心对称轴翻转
case CrossDissolve 效果是 淡出
@available(iOS 3.2, *)
case PartialCurl 效果是 翻页的效果
}
*/
TVC.modalTransitionStyle = .PartialCurl
//另一种跳转风格
/*
public enum UIModalPresentationStyle : Int {
case FullScreen 效果是 要弹出的控制器会充满全屏,但是当 wantsFullScreenLayout 设置为true 的时候 会填充到状态栏的下面,否则,是填充状态栏左下角一下的区间
@available(iOS 3.2, *)
case PageSheet 要弹出的控制器的高度和当前屏幕高度相同,宽度和竖屏模式下屏幕宽度相同,剩余未覆盖区域将会变暗并阻止用户点击,这种弹出模式下,竖屏时跟 FullScreen的效果一样,横屏时候两边则会留下变暗的区域。
@available(iOS 3.2, *)
case FormSheet 要弹出的控制器的高度和宽度均会小于屏幕尺寸,presented VC居中显示,四周留下变暗区域。
@available(iOS 3.2, *)
case CurrentContext
@available(iOS 7.0, *)
case Custom 默认效果
@available(iOS 8.0, *)
case OverFullScreen 要弹出的控制器,要覆盖整个手机屏幕
@available(iOS 8.0, *)
case OverCurrentContext 要弹出的控制器要覆盖的内容
@available(iOS 8.0, *)
case Popover
@available(iOS 7.0, *)
case None
}
???????????《---注意----了》????????????
注意了:以上的效果,只有在 IPa 上面才有效果,在Iphone和Watch 上已经被同化 和 modalTransitionStyle 的 CoverVertical 的效果一样
????????????????????????????????
*/
TVC.modalPresentationStyle = .FormSheet
self.presentViewController(TVC, animated: true, completion: nil)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}