UIViewController类详解:

通过Nib文件初始化


StoryBoard相关




Unwindsegue的实现原理请参考相关文章

View相关


println("view = \(view)")
println("view is loaded = \(isViewLoaded())")
title = "ViewController"<pre name="code" class="objc">//如果不是nib文件初始化而来,初始化的时候需要调用这个方法初始化view,此方法不能主动调用,是系统调用的<pre name="code" class="objc">override func loadView() {
super.loadView()<pre name="code" class="objc">}//view初始化以后调用

模式跳转

  1. //设置模式跳转的类别,但是必须是目的Controller设置,不能是上级设置
  2. //CoverVertical, FlipHorizontal, CrossDissolve, PartialCurl四种类型
  3. viewController.modalTransitionStyle = .FlipHorizontal
  4. //设置模式展示样式,适合于iPad上
  5. viewController.modalPresentationStyle = .FullScreen
  6. //如果展示不是.FullScreen, 那么设置是不是捕获statusBar的样式,适合iPad
  7. viewController.modalPresentationCapturesStatusBarAppearance = true
  8. //判断在模式跳转时消失是否键盘
  9. viewController.disablesAutomaticKeyboardDismissal()
  10. presentViewController(viewController, animated: true) { () -> Void in
  11. //跳转到下个界面
  12. }
  13. dismissViewControllerAnimated(true , completion: { () -> Void in
  14. //回复模式跳转
  15. })

配置View的layout

  1. // layoutSubviews方法调用之前
  2. override func viewWillLayoutSubviews() {
  3. super.viewWillLayoutSubviews()
  4. }
  5. // layoutSubviews方法调用之后
  6. override func viewDidLayoutSubviews() {
  7. super.viewDidLayoutSubviews()
  8. }<pre name="code" class="objc">

updateViewConstraints()


  1. //延伸的方向--set which sides of your view can be extended to cover the whole screen.
  2. if self.respondsToSelector(Selector("edgesForExtendedLayout")) {
  3. self.edgesForExtendedLayout = .None
  4. }
  5. //Scrollview滚动时处于全屏,默认YES
  6. if self.respondsToSelector(Selector("automaticallyAdjustsScrollViewInsets")) {
  7. self.automaticallyAdjustsScrollViewInsets = true
  8. }
  9. //当statusbar是透明时,是否扩展至StatusBar,默认情况下是NO,且statusbar不是透明的
  10. if self.respondsToSelector(Selector("extendedLayoutIncludesOpaqueBars")) {
  11. self.extendedLayoutIncludesOpaqueBars = false
  12. }
  13. //控制view的大小UIPopoverController用的比较的广泛
  14. self.preferredContentSize = self.view.bounds.size

跳转相关

  1. isBeingPresented()                                                      //是否在展示
  2. isBeingDismissed()                                                      //是否在dismiss
  3. isMovingToParentViewController()
  4. isMovingFromParentViewController()

旋转相关

  1. //是否需要旋转
  2. override func shouldAutorotate() -> Bool {
  3. return true
  4. }
  5. //支持的方向
  6. override func supportedInterfaceOrientations() -> Int {
  7. return 2
  8. }
  9. //优先支持的方向
  10. override func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation {
  11. return .Portrait
  12. }

自定义的ViewController Container

  1. //https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html
  2. //addChildVIewController:调用这个方法指明一个视图控制器作为你的子视图。
  3. func addChildViewController(childController: UIViewController) {
  4. }
  5. //调用这个方法将一个视图控制器从你的子视图列表里移除。
  6. func removeFromParentViewController() {
  7. }
  8. //这是一个使用一个唯一可选的视图替换另一个视图的新方法,或者移动一个子视图到前台来。通过使用这个方法,这个视图控制器的生命周期信息会被正确地发送出去        func transitionFromViewController(fromViewController: UIViewController, toViewController: UIViewController, duration: NSTimeInterval, options: UIViewAnimationOptions, animations: () -> Void, completion: ((Bool) -> Void)?) {
  9. }
  10. //将要移到父Controller
  11. func willMoveToParentViewController(parent: UIViewController?) {
  12. }
  13. //已经移到父Controller
  14. func didMoveToParentViewController(parent: UIViewController?) {
  15. }
  16. //触发子ViewController的viewWillAppear
  17. func beginAppearanceTransition(isAppearing: Bool, animated: Bool) {
  18. }
  19. //触发childd的viewDidAppear这些方法
  20. func endAppearanceTransition() {
  21. }
  22. //child ViewController的作为状态栏
  23. func childViewControllerForStatusBarStyle() -> UIViewController? {
  24. return nil;
  25. }
  26. //child ViewController的状态栏是否隐藏设置状态栏
  27. func childViewControllerForStatusBarHidden() -> UIViewController? {
  28. return nil;
  29. }

恢复相关

  1. restorationIdentifier 恢复标示
  2. restorationClass      恢复的类
  3. override func encodeRestorableStateWithCoder(coder: NSCoder) {
  4. }
  5. override func decodeRestorableStateWithCoder(coder: NSCoder) {
  6. }
  7. applicationFinishedRestoringState() 恢复完成

获得其他的ViewController

  1. println("parentViewController=\(self.parentViewController)")            //父类Controller
  2. println("presentedViewController=\(self.presentedViewController)")      //Controller模式跳转到去Controller或父容器
  3. println("presentingViewController=\(self.presentingViewController)")    //Controller模式跳转来自于Controller或父容器
  4. //        self.navigationController
  5. //        self.tabBarController
  6. //        self.presentationController
  7. //        self.splitViewController
  8. //        self.popoverPresentationController

StatusBar相关

  1. //如果展示不是.FullScreen, 那么设置是不是捕获statusBar的样式,适合iPad
  2. viewController.modalPresentationCapturesStatusBarAppearance = true
  3. //child ViewController的作为状态栏
  4. func childViewControllerForStatusBarStyle() -> UIViewController? {
  5. return nil;
  6. }
  7. //child ViewController的状态栏是否隐藏设置状态栏
  8. func childViewControllerForStatusBarHidden() -> UIViewController? {
  9. return nil;
  10. }
  11. //设置当前ViewController的StatusBar的样式
  12. override func preferredStatusBarStyle() -> UIStatusBarStyle {
  13. return .Default
  14. }
  15. //隐藏还是展示statusBar
  16. override func prefersStatusBarHidden() -> Bool {
  17. return true
  18. }
  19. //statusBar的改变动画
  20. override func preferredStatusBarUpdateAnimation() -> UIStatusBarAnimation {
  21. return .Fade
  22. }
  23. //当statusBar的状态改变后需要调用刷新
  24. //    setNeedsStatusBarAppearanceUpdate()

Navigation相关

  1. override func setToolbarItems(toolbarItems: [AnyObject]?, animated: Bool) {
  2. }
  3. self.navigationItem
  4. self.editButtonItem()
  5. hidesBottomBarWhenPushed = true
  6. self.toolbarItems = nil

TabBar相关

  1. self.toolbarItems

常量

    1. UIModalTransitionStyle
    2. Modal Presentation Styles
    3. UIViewControllerHierarchyInconsistencyException
    4. UIViewControllerShowDetailTargetDidChangeNotification

Swift - UIViewController的更多相关文章

  1. Swift UIViewController中的delegate方式传值

    ios swift开发中有几种方式传值,看到简书上一篇不错的文章. 链接:http://www.jianshu.com/p/3e1173652996 一.通过segue进行传值 二.通过delegat ...

  2. swift之弹出一个背景半透明的UIViewController

    坑爹的背景半透明,按网上给出oc的方法,动画结束之后,半透明效果消失.通过各种折腾,各种试验,终于搞定了. let viewController=storyboard.instantiateViewC ...

  3. swift 加载 storyboard 里的UIViewController

    let storyBoard:UIStoryboard! = UIStoryboard(name: "Main", bundle: nil) let deskVC:DeskView ...

  4. Swift开发教程--设置UIViewController的背景透明

    非常easy的一句代码 self.view.backgroundColor = UIColor.clearColor() 由此联想开来,非常多的控件想设置为背景透明都能够用UIColor.clearC ...

  5. ios swift 判断uiviewcontroller时push present 进来的 还是pop进来的

    override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) //显示navbar self.navi ...

  6. iOS代码规范(OC和Swift)

    下面说下iOS的代码规范问题,如果大家觉得还不错,可以直接用到项目中,有不同意见 可以在下面讨论下. 相信很多人工作中最烦的就是代码不规范,命名不规范,曾经见过一个VC里有3个按钮被命名为button ...

  7. 【swift】BlockOperation和GCD实用代码块

    //BlockOperation // // ViewController.swift import UIKit class ViewController: UIViewController { @I ...

  8. iOS开发系列--Swift进阶

    概述 上一篇文章<iOS开发系列--Swift语言>中对Swift的语法特点以及它和C.ObjC等其他语言的用法区别进行了介绍.当然,这只是Swift的入门基础,但是仅仅了解这些对于使用S ...

  9. Swift 必备开发库 (高级篇) (转)

    1.CryptoSwift swift加密库, 支持md5,sha1,sha224,sha256... github地址: https://github.com/krzyzanowskim/Crypt ...

随机推荐

  1. utils部分--一些通用的工具类封装

    1.简介 utils部分是对一些常用的工具类进行简单的封装,使用起来比较方便.这里列举常用的一些. 2.ContextUtils使用 主要封装了网络判断.一些方法解释如下: ? 1 2 3 4 5 6 ...

  2. HNU 12886 Cracking the Safe(暴力枚举)

    题目链接:http://acm.hnu.cn/online/?action=problem&type=show&id=12886&courseid=274 解题报告:输入4个数 ...

  3. 5分钟教你Windows 10中将“运行”固定到开始菜单

    导读 “运行”功能深受很多资深IT之家用户喜爱,因为它简约.方便.实用.在Win7等旧版系统中,用户可以让该功能直接在开始菜单显示,方便操作.但在Win10中,由于开始菜单已经重新编写,原有的设定已经 ...

  4. ios本地化多语言支持

    右键 -> new file -> resources -> strings file 一定要命名为: Localizable.strings 点击这个文件 -> xocde ...

  5. leetcode 100. Same Tree

    Given two binary trees, write a function to check if they are equal or not. Two binary trees are con ...

  6. WEB前端知识在乱花渐欲迷人眼的当下,如何分清主次和学习优先级呢?

    从正美的吐槽开始,我回了下,说对盲目跟风的大众失去信心了.然后一些同学说我固步自封,另一些同学估计想说倚老卖老啥的.我想说清楚一点,我从 未停止过学习,只是对知识的重要程度和精力分配有自己的观点.具体 ...

  7. OpenCV成长之路(6):数学形态学基本操作及其应用

    数学形态学实际上可以理解为一种滤波行为,所以很多地方称它为形态学滤波.有了个这概念,我们就能更好的理解它.我们滤波中用的滤波器(kernel)在这里被称为结构元素,结构元素往往是由一个特殊的形状构成, ...

  8. linux kernel 字符设备详解

    有关Linux kernel 字符设备分析: 参考:http://blog.jobbole.com/86531/ 一.linux kernel 将设备分为3大类,字符设备,块设备,网络设备. 字符设备 ...

  9. Codeforces Gym 100114 D. Selection

    Description 问选择一个序列上的所有数的最少操作次数,跟电脑上选择文件一样,输出操作方案. Sol 贪心. 用Shift一段文件只能使用一次,之后必须一直按Ctrl了. 然后就是看用Shif ...

  10. discuzX3后台管理插件开发示例一 用户表查询

    上次的入门已经介绍了后台管理插件开发的基本步骤,下面简单写一个示例查询一下用户表 需要已完成以下操作: 1.已创建test后台管理插件 //详见 http://www.cnblogs.com/savo ...