swift场转的几种方式及优缺点分析(慢慢更新)

swift场转的几种方式及优缺点分析(慢慢更新),第1张

概述一、d出present: 优点:代码简洁,简单,使用灵活。 缺点:只能从下向上d出新的页面,不能使用其他动画,比较古板。新窗口关闭时,也只能先进后出(即:现打开的后关闭,后打开的先关闭),不能任意关闭窗口。 适用场景:适合用来d出『登陆』『注册』这种与其他页面关联度不大,使用次数又少的场景。 用法: 去: let pvc = storyboard?.instantiateViewControlle 一、d出present:

优点:代码简洁,简单,使用灵活。

缺点:只能从下向上d出新的页面,不能使用其他动画,比较古板。新窗口关闭时,也只能先进后出(即:现打开的后关闭,后打开的先关闭),不能任意关闭窗口。

适用场景:适合用来d出『登陆』『注册』这种与其他页面关联度不大,使用次数又少的场景。

用法:

去:

letpvc=storyboard?.instantiateVIEwControllerWithIDentifIEr("public")as!VIEwControllerPublicself.presentVIEwController(pvc,animated:true,completion:{print("已经跳转了")})

回:

self.dismissVIEwControllerAnimated(true,completion:{print("正在关闭")})
二、跳转segue:

优点:上手难度低,在storyboard上拖拖拽拽就定义好了,是ios最基础的跳转方式。

缺点:只能用拖拽来静态定义,不支持动态定义,非常不灵活,遇到复杂一点的逻辑,比如动态生成100多个页面这种情况就不能用了。

适用场合:产品经理在演示时,即时定义达到演示效果。

详情:由于此方法太简单,所以就随便参考一下别人的吧,点击进入

三、导航navigation

优点:自由灵活,能定义多种样式、效果,是最专业也是使用最多的场转方式,每一个UIVIEw的子类中都默认含有navigationController、navigationItem,可以看出官方也最推荐这种方式

缺点:定义复杂,内部组件多,区别模糊,代码和storyboard使用方式区别较大,难度较高,其实说到底,navigation就是对segue的封装,并且提供了一套对segue的管理方法。

适用场合:所有!

用法: 1、在AppDelegate的dIDFinishLaunchingWithOptions方法中定义一个UINavigationController。
funcapplication(application:UIApplication,dIDFinishLaunchingWithOptionslaunchOptions:[NSObject:AnyObject]?)->Bool{letrootvc=window?.rootVIEwControllerletnav=UINavigationController(rootVIEwController:rootvc!)//获取主storyboard//letsb=UIStoryboard(name:"Main",bundle:nil)//设置返回按钮图标和标题的颜色nav.navigationbar.tintcolor=UIcolor.redcolor()//设置导航栏的背景颜色nav.navigationbar.backgroundcolor=UIcolor.greencolor()nav.navigationbar.barTintcolor=UIcolor.redcolor()//上面的不起作用就用这个//据说是设置什么透明度,我试了试没出效果nav.navigationbar.translucent=true//设置导航条的风格,这里系统一共就提供了3种风格,其中还有一种已经不推荐用了,所以这个功能基本就是废。//nav.navigationbar.barStyle=.Black//设置导航栏的背景图//nav.navigationbar.setBackgroundImage(UIImage(named:"xxx"),forbarMetrics:.Default)//最后一定要记得指定一下程序的入口页面(根视图)self.window?.rootVIEwController=navreturntrue}
2、在每个分页的VIEwController中定义导航条的样式及按钮点击事件。
importUIKitclassVIEwController:UIVIEwController{overrIDefuncvIEwDIDLoad(){super.vIEwDIDLoad()//设置当前页面的标题self.navigationItem.title="第一页"//自定义导航条中间位置的可视化控件//self.navigationItem.TitleVIEw=UIVIEw()//定制返回按钮,如修改返回按钮的tilte或者图标等,这里如果把某参数的值设为nil,系统会自动设为默认值self.navigationItem.backbarbuttonItem=UIbarbuttonItem(Title:"",style:.Plain,target:nil,action:nil)//定义当前页面的navigationItem的右按钮letrbb=UIbarbuttonItem(Title:"关闭",style:UIbarbuttonItemStyle.Done,target:self,action:#selector(VIEwController.rbbClicked(_:)))//这里也可以使用系统内置的barbuttonItem,如://letrbb=UIbarbuttonItem(barbuttonSystemItem:.Add,action:"rbbClicked:")self.navigationItem.rightbarbuttonItem=rbb//定义当前页面的navigationItem的左按钮(系统默认添加了一个带箭头的左按钮,一旦添加,就会替换系统自动生成的左按钮letlbb=UIbarbuttonItem(Title:"返回",style:UIbarbuttonItemStyle.Plain,action:#selector(VIEwController.rbbClicked(_:)))self.navigationItem.leftbarbuttonItem=lbb}funcrbbClicked(sender:AnyObject){print("点了右边的按钮")}overrIDefuncdIDReceiveMemoryWarning(){super.dIDReceiveMemoryWarning()//dispoSEOfanyresourcesthatcanberecreated.}}

这里要明确一个非常非常有意思的问题,导航到第二个页面之后会看到页面左上部有一个back按钮,就是这个按钮,他并不属于当前页面,而是属于上一级页面!

有关NavigationBar的样式设计,请参考这里

四、页面返回的具体分析

1.对于present出来的页面,因为其打开方式就是自下而上的d出,所以用self.dismissVIEwControllerAnimated(自上而下隐藏)最合适不过了。

2.对于segue出来的页面,也可以用self.dismissVIEwControllerAnimated来隐藏,但是明显不合适。

3.除了上述的办法,navigationController还提供了3种方法,且都是左右滑出的:

//返回到上一级页面self.navigationController?.popVIEwControllerAnimated(true)//返回到之前跳转过的特定的一个页面,注意这里的『navigationController?.vIEwControllers』这个数组中的元素是导航过程中的页面,也就是说在rootVIEwController调用,只能获取到navigationController?.vIEwControllers[0],而在第二个页面才可以获取到navigationController?.vIEwControllers[1]。self.navigationController?.popToVIEwController((self.navigationController?.vIEwControllers[0])!,animated:true)//直接返回到rootVIEwControllerself.navigationController?.popToRootVIEwControllerAnimated(true)
总结

以上是内存溢出为你收集整理的swift场转的几种方式及优缺点分析(慢慢更新)全部内容,希望文章能够帮你解决swift场转的几种方式及优缺点分析(慢慢更新)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1077324.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存