Swift - UIViewController
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初始化以后调用
模式跳转
- //设置模式跳转的类别,但是必须是目的Controller设置,不能是上级设置
- //CoverVertical, FlipHorizontal, CrossDissolve, PartialCurl四种类型
- viewController.modalTransitionStyle = .FlipHorizontal
- //设置模式展示样式,适合于iPad上
- viewController.modalPresentationStyle = .FullScreen
- //如果展示不是.FullScreen, 那么设置是不是捕获statusBar的样式,适合iPad
- viewController.modalPresentationCapturesStatusBarAppearance = true
- //判断在模式跳转时消失是否键盘
- viewController.disablesAutomaticKeyboardDismissal()
- presentViewController(viewController, animated: true) { () -> Void in
- //跳转到下个界面
- }
- dismissViewControllerAnimated(true , completion: { () -> Void in
- //回复模式跳转
- })
配置View的layout
- // layoutSubviews方法调用之前
- override func viewWillLayoutSubviews() {
- super.viewWillLayoutSubviews()
- }
- // layoutSubviews方法调用之后
- override func viewDidLayoutSubviews() {
- super.viewDidLayoutSubviews()
- }<pre name="code" class="objc">
updateViewConstraints()
- //延伸的方向--set which sides of your view can be extended to cover the whole screen.
- if self.respondsToSelector(Selector("edgesForExtendedLayout")) {
- self.edgesForExtendedLayout = .None
- }
- //Scrollview滚动时处于全屏,默认YES
- if self.respondsToSelector(Selector("automaticallyAdjustsScrollViewInsets")) {
- self.automaticallyAdjustsScrollViewInsets = true
- }
- //当statusbar是透明时,是否扩展至StatusBar,默认情况下是NO,且statusbar不是透明的
- if self.respondsToSelector(Selector("extendedLayoutIncludesOpaqueBars")) {
- self.extendedLayoutIncludesOpaqueBars = false
- }
- //控制view的大小UIPopoverController用的比较的广泛
- self.preferredContentSize = self.view.bounds.size
跳转相关
- isBeingPresented() //是否在展示
- isBeingDismissed() //是否在dismiss
- isMovingToParentViewController()
- isMovingFromParentViewController()
旋转相关
- //是否需要旋转
- override func shouldAutorotate() -> Bool {
- return true
- }
- //支持的方向
- override func supportedInterfaceOrientations() -> Int {
- return 2
- }
- //优先支持的方向
- override func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation {
- return .Portrait
- }
自定义的ViewController Container
- //https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html
- //addChildVIewController:调用这个方法指明一个视图控制器作为你的子视图。
- func addChildViewController(childController: UIViewController) {
- }
- //调用这个方法将一个视图控制器从你的子视图列表里移除。
- func removeFromParentViewController() {
- }
- //这是一个使用一个唯一可选的视图替换另一个视图的新方法,或者移动一个子视图到前台来。通过使用这个方法,这个视图控制器的生命周期信息会被正确地发送出去 func transitionFromViewController(fromViewController: UIViewController, toViewController: UIViewController, duration: NSTimeInterval, options: UIViewAnimationOptions, animations: () -> Void, completion: ((Bool) -> Void)?) {
- }
- //将要移到父Controller
- func willMoveToParentViewController(parent: UIViewController?) {
- }
- //已经移到父Controller
- func didMoveToParentViewController(parent: UIViewController?) {
- }
- //触发子ViewController的viewWillAppear
- func beginAppearanceTransition(isAppearing: Bool, animated: Bool) {
- }
- //触发childd的viewDidAppear这些方法
- func endAppearanceTransition() {
- }
- //child ViewController的作为状态栏
- func childViewControllerForStatusBarStyle() -> UIViewController? {
- return nil;
- }
- //child ViewController的状态栏是否隐藏设置状态栏
- func childViewControllerForStatusBarHidden() -> UIViewController? {
- return nil;
- }
恢复相关
- restorationIdentifier 恢复标示
- restorationClass 恢复的类
- override func encodeRestorableStateWithCoder(coder: NSCoder) {
- }
- override func decodeRestorableStateWithCoder(coder: NSCoder) {
- }
- applicationFinishedRestoringState() 恢复完成
获得其他的ViewController
- println("parentViewController=\(self.parentViewController)") //父类Controller
- println("presentedViewController=\(self.presentedViewController)") //Controller模式跳转到去Controller或父容器
- println("presentingViewController=\(self.presentingViewController)") //Controller模式跳转来自于Controller或父容器
- // self.navigationController
- // self.tabBarController
- // self.presentationController
- // self.splitViewController
- // self.popoverPresentationController
StatusBar相关
- //如果展示不是.FullScreen, 那么设置是不是捕获statusBar的样式,适合iPad
- viewController.modalPresentationCapturesStatusBarAppearance = true
- //child ViewController的作为状态栏
- func childViewControllerForStatusBarStyle() -> UIViewController? {
- return nil;
- }
- //child ViewController的状态栏是否隐藏设置状态栏
- func childViewControllerForStatusBarHidden() -> UIViewController? {
- return nil;
- }
- //设置当前ViewController的StatusBar的样式
- override func preferredStatusBarStyle() -> UIStatusBarStyle {
- return .Default
- }
- //隐藏还是展示statusBar
- override func prefersStatusBarHidden() -> Bool {
- return true
- }
- //statusBar的改变动画
- override func preferredStatusBarUpdateAnimation() -> UIStatusBarAnimation {
- return .Fade
- }
- //当statusBar的状态改变后需要调用刷新
- // setNeedsStatusBarAppearanceUpdate()
Navigation相关
- override func setToolbarItems(toolbarItems: [AnyObject]?, animated: Bool) {
- }
- self.navigationItem
- self.editButtonItem()
- hidesBottomBarWhenPushed = true
- self.toolbarItems = nil
TabBar相关
- self.toolbarItems
常量
- UIModalTransitionStyle
- Modal Presentation Styles
- UIViewControllerHierarchyInconsistencyException
- UIViewControllerShowDetailTargetDidChangeNotification
Swift - UIViewController的更多相关文章
- Swift UIViewController中的delegate方式传值
ios swift开发中有几种方式传值,看到简书上一篇不错的文章. 链接:http://www.jianshu.com/p/3e1173652996 一.通过segue进行传值 二.通过delegat ...
- swift之弹出一个背景半透明的UIViewController
坑爹的背景半透明,按网上给出oc的方法,动画结束之后,半透明效果消失.通过各种折腾,各种试验,终于搞定了. let viewController=storyboard.instantiateViewC ...
- swift 加载 storyboard 里的UIViewController
let storyBoard:UIStoryboard! = UIStoryboard(name: "Main", bundle: nil) let deskVC:DeskView ...
- Swift开发教程--设置UIViewController的背景透明
非常easy的一句代码 self.view.backgroundColor = UIColor.clearColor() 由此联想开来,非常多的控件想设置为背景透明都能够用UIColor.clearC ...
- ios swift 判断uiviewcontroller时push present 进来的 还是pop进来的
override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) //显示navbar self.navi ...
- iOS代码规范(OC和Swift)
下面说下iOS的代码规范问题,如果大家觉得还不错,可以直接用到项目中,有不同意见 可以在下面讨论下. 相信很多人工作中最烦的就是代码不规范,命名不规范,曾经见过一个VC里有3个按钮被命名为button ...
- 【swift】BlockOperation和GCD实用代码块
//BlockOperation // // ViewController.swift import UIKit class ViewController: UIViewController { @I ...
- iOS开发系列--Swift进阶
概述 上一篇文章<iOS开发系列--Swift语言>中对Swift的语法特点以及它和C.ObjC等其他语言的用法区别进行了介绍.当然,这只是Swift的入门基础,但是仅仅了解这些对于使用S ...
- Swift 必备开发库 (高级篇) (转)
1.CryptoSwift swift加密库, 支持md5,sha1,sha224,sha256... github地址: https://github.com/krzyzanowskim/Crypt ...
随机推荐
- 将一个div始终定位在屏幕中心
//div的id为box #box{ width:200px; heighti:200px; border:1px solid #f00; //重点是以下规则 position:absolute; t ...
- Java 7 Concurrency Cookbook 翻译 第一章 线程管理之六
十一.处理线程组中的未控制异常 每种编程语言一个很重要的特性就是其所提供的用来处理程序中错误情况的机制.Java语言和其他的现代语言一样,是提供了异常机制来处理对象程序中的错误.Java提供了很多的类 ...
- HDU 4793 Collision(2013长沙区域赛现场赛C题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4793 解题报告:在一个平面上有一个圆形medal,半径为Rm,圆心为(0,0),同时有一个圆形范围圆心 ...
- iOS开发——多线程篇——多线程介绍
一.进程和线程1.什么是进程进程是指在系统中正在运行的一个应用程序每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开迅雷.Xcode,系统就会分别启动2个进程 通过“活动监 ...
- 跟着百度学PHP[3]-PHP中结构嵌套之循环结构与条件结构嵌套
任务 有个学生数组存储了学号和姓名,我们需要查找学号为"2014"的学生姓名,这时候我们就需要遍历该数组,并判定学号是否为"201 <?php $student = ...
- 数据统计表插件,highcharts插件的简单应用
highcharts插件的简单应用,非常全能好用的一个数据统计表插件. $(function () { $('#container').highcharts({ chart:{ type:" ...
- 1.1---判断字符串是否所有字符都不相同(CC150)
import java.util.*; public class Different { public boolean checkDifferent(String str) { // write co ...
- python md5加密中文
import md5 md5.new(u'中文').hexdigest() 会失败,报告ascii码不能解码0x.... 原因是md5会自动将被加密的数据转成字节码,如果没有详细制定编码,则可能采用了 ...
- java实现远程储存读取文件
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileN ...
- pycharm 2016 注册码
43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTczWVlKIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiI ...