UIViewController详解--Swift版本
UIViewController类详解:
通过Nib文件初始化
- init(nibNamenibName:String?,bundlenibBundle:NSBundle?)
- println("nibName=\(self.nibName)")
- println("nibBundle=\(self.nibBundle)")
StoryBoard相关
copy
println("storyboard=\(self.storyboard)")
- overridefuncshouldPerformSegueWithIdentifier(identifier:String?,sender:AnyObject?)->Bool{
- returntrue
- }
-
- overridefuncprepareForSegue(segue:UIStoryboardSegue,0); background-color:inherit">sender:AnyObject?){
- print("prepareForSegue")
- //根据UIStoryBoarSegue的Identifier进行跳转
- overridefuncperformSegueWithIdentifier(identifier:String?,153); font-weight:bold; background-color:inherit">super.performSegueWithIdentifier(identifier!,sender:sender)
- }
//subViewController是否能够执行UnwindSegue
- overridefunccanPerformUnwindSegueAction(action:Selector,0); background-color:inherit">fromViewController:UIViewController,withSendersender:AnyObject)->Bool{
- }
//如果执行UnwindSegue,就返回Segue
- overridefuncsegueForUnwindingToViewController(toViewController:UIViewController,0); background-color:inherit">identifier:String?)->UIStoryboardSegue{
- copy
//能够执行Segue的Controller
- funcviewControllerForUnwindSegueAction(action:Selector,0); background-color:inherit">sender:AnyObject?)->UIViewController?{
- }
Unwindsegue的实现原理请参考相关文章
View相关
copy
println("view=\(view)")
- println("viewisloaded=\(isViewLoaded())")
- title="ViewController"<prename="code"class="objc">
- super.loadView()<prename="code"class="objc">}
overridefuncviewDidLoad(){
super.viewDidLoad()<spanstyle="font-family:Arial,sans-serif;">
- }<prename="code"class="objc">overridefuncviewWillAppear(animated:Bool){
- super.viewWillAppear(animated)
-
-
- overridefuncviewDidAppear(animated:Bool){
- super.viewDidAppear(animated)
- }
-
- //view被遮挡或者隐藏时调用
- overridefuncviewWilldisappear(animated:Bool){
- super.viewWilldisappear(animated)
- //view被遮挡或者隐藏后调用
- overridefuncviewDiddisappear(animated:Bool){
- super.viewDiddisappear(animated)
- 模式跳转
copy
//设置模式跳转的类别,但是必须是目的Controller设置,不能是上级设置
- //CoverVertical,FlipHorizontal,Crossdissolve,PartialCurl四种类型
- viewController.modalTransitionStyle=.FlipHorizontal
- //设置模式展示样式,适合于iPad上
- viewController.modalPresentationStyle=.FullScreen
- //如果展示不是.FullScreen,那么设置是不是捕获statusBar的样式,适合iPad
- viewController.modalPresentationCapturesstatusBarappearance=//判断在模式跳转时消失是否键盘
- viewController.disablesAutomaticKeyboarddismissal()
- presentViewController(viewController,0); background-color:inherit">animated:true){()->Voidin
- //跳转到下个界面
- dismissViewControllerAnimated(true,0); background-color:inherit">completion:{()->Voidin
- //回复模式跳转
- })
配置View的layout
//layoutSubviews方法调用之前
- overridefuncviewWillLayoutSubviews(){
- super.viewWillLayoutSubviews()
- //layoutSubviews方法调用之后
- overridefuncviewDidLayoutSubviews(){
- super.viewDidLayoutSubviews()
- class="objc">
updateViewConstraints()
//延伸的方向--setwhichsidesofyourviewcanbeextendedtocoverthewholescreen.
- ifself.respondsToSelector(Selector("edgesForExtendedLayout")){
- self.edgesForExtendedLayout=.None
- //Scrollview滚动时处于全屏,默认YES
- self.respondsToSelector(Selector("automaticallyAdjustsScrollViewInsets")){
- self.automaticallyAdjustsScrollViewInsets=//当statusbar是透明时,是否扩展至StatusBar,默认情况下是NO,且statusbar不是透明的
- self.respondsToSelector(Selector("extendedLayoutIncludesOpaqueBars")){
- self.extendedLayoutIncludesOpaqueBars=false
- //控制view的大小UIPopoverController用的比较的广泛
- self.preferredContentSize=self.view.bounds.size
跳转相关
isBeingPresented()
- isBeingdismissed()
- isMovingToParentViewController()
- isMovingFromParentViewController()
旋转相关
copy
//是否需要旋转
- overridefuncshouldAutorotate()->Bool{
- //支持的方向
- overridefuncsupportedInterfaceOrientations()->Int{
- return2
- //优先支持的方向
- overridefuncpreferredInterfaceOrientationForPresentation()->UIInterfaceOrientation{
- return.Portrait
- }
自定义的ViewController Container
copy
//https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html
- //addChildVIewController:调用这个方法指明一个视图控制器作为你的子视图。
- funcaddChildViewController(childController:UIViewController){
- //调用这个方法将一个视图控制器从你的子视图列表里移除。
- funcremoveFromParentViewController(){
- //这是一个使用一个唯一可选的视图替换另一个视图的新方法,或者移动一个子视图到前台来。通过使用这个方法,这个视图控制器的生命周期信息会被正确地发送出去functransitionFromViewController(fromViewController:UIViewController,toViewController:UIViewController,duration:NSTimeInterval,options:UIViewAnimationoptions,animations:()->Void,completion:((Bool)->Void)?){
- //将要移到父Controller
- funcwillMovetoParentViewController(parent:UIViewController?){
- //已经移到父Controller
- funcdidMovetoParentViewController(parent:UIViewController?){
- //触发子ViewController的viewWillAppear
- funcbeginAppearanceTransition(isAppearing:Bool,0); background-color:inherit">animated:Bool){
- //触发childd的viewDidAppear这些方法
- funcendAppearanceTransition(){
- //childViewController的作为状态栏
- funcchildViewControllerForStatusBarStyle()->UIViewController?{
- returnnil;
- //childViewController的状态栏是否隐藏设置状态栏
- funcchildViewControllerForStatusBarHidden()->UIViewController?{
- 恢复相关
copy
restorationIdentifier恢复标示
- restorationClass恢复的类
- overridefuncencodeRestorableStateWithCoder(coder:NSCoder){
- overridefuncdecodeRestorableStateWithCoder(coder:NSCoder){
- applicationFinishedRestoringState()恢复完成
获得其他的ViewController
copy
println("parentViewController=\(self.parentViewController)")
- println("presentedViewController=\(self.presentedViewController)")
- println("presentingViewController=\(self.presentingViewController)")
- //self.navigationController
- //self.tabBarController
- //self.presentationController
- //self.splitViewController
- //self.popoverPresentationController
StatusBar相关
- viewController.modalPresentationCapturesstatusBarappearance=true
- //设置当前ViewController的StatusBar的样式
- overridefuncpreferredStatusBarStyle()->UIStatusBarStyle{
- return.Default
- //隐藏还是展示statusBar
- overridefuncprefeRSStatusBarHidden()->Bool{
- //statusBar的改变动画
- overridefuncpreferredStatusBarUpdateAnimation()->UIStatusBaranimation{
- return.Fade
- //当statusBar的状态改变后需要调用刷新
- //setNeedsstatusBarappearanceUpdate()
Navigation相关
copy
overridefuncsettoolbaritems(toolbaritems:[AnyObject]?,0); background-color:inherit">animated:Bool){
- self.navigationItem
- self.editButtonItem()
- hidesBottomBarWhenPushed=self.toolbaritems=nil
TabBar相关
copy
self.toolbaritems
常量
copy
UIModalTransitionStyle
- ModalPresentationStyles
- UIViewControllerHierarchyInconsistencyException
- UIViewControllerShowDetailTargetDidChangeNotification
相关文章
软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...