ios开发之故事板

ios之故事版板

  • 导航控件
  • 底部控件
  • 页面跳转实现
  • 故事版与代码、XIB结合

1.导航控件
UINavigationController,故事版上使用navigationController管理页面,自动会生成默认的导航,Simulated Metrics栏目中设置topBar我们可以设置半透明的导航和不透明的导航,英文对应translucent 和opaque,选择navagationwithprompt 可以增加导航的默认高度,可以有两行标题。一般的,我们一般在导航控制器navigationController中设置导航的颜色,默认系统有两种自带的颜色(黑色和白色)分别设置topBar中导航类型,对于需要设置其他颜色的导航,我们只需要在导航控制器的navigation Bar 的attributes inspector中设置Bar tint颜色,代码:self.navigationBar.barTintColor = UIColor.greenColor() , 对于需要设置导航上按钮的颜色,可以对故事版导航Navgation Bar中的tint进行设置,代码: self.navigationBar.tintColor ,需要注意的是导航控制的颜色是全局的,一旦你在导航控制的其他页面中设置导航的颜色或者按钮的颜色,那么,其他的页面也将受到影响。 与此同时,我们可以设置添加导航的图片背景,修改导航文字的颜色等等


2.底部控件
底部控制器UITabBarController,底部控制器默认包含tap bar,类似于导航控制器,我们可以对tap Bar属性设置,一般导航默认为半透明,如果不想使用半透明,我们可以取消tap Bar中的translucent的勾选,同样的我们底部bar设置tapBar设置背景颜色,及修改Bar tint属性,同时也可以添加图片作为底部背,设置Background,代码中时backgroundImage ,需要注意的是,我们在修改属性Tint属性的时候,实现的是点击按钮后文字发生的相应的变化,同样的控制导航颜色也是全局。


3.页面跳转实现
故事版中,实现页面跳转,我们可以简单到直接从页面上的某个button按钮拉取一条线到另一个页面,操作在该按钮上按住control + drag到另一个页面,对于有导航控制的页面我们可以选择push 和model方式,其他可以采用model方式或者自定义方式。对于push方式,我们这边详细介绍下,push方式实质上是栈数据结构方式,特别的对于底部导航控制器前提下,对于push新页面的时候,我们需要隐藏底部,一般设置勾选故事版中的hide Bottom Bar on Push,对于约束布局仅仅这样是不够的(即从下往上的约束,例如一个view设置了到self.view.boottom的约束,没有设置与self.view.bottom的约束则不会出现下面的情况),勾选该项后跳转页面可以达到隐藏底部的效果,同时返回当前页面也不会隐藏掉底部,但是,push到新页面后会出现页面整体下移的效果,感觉就像是底部突然消失,而不是一开始就没有。这个时候我们需要在UIViewController的自带view上在添加一个自定义的view使他覆盖掉原来的view,以后的view我们都添加到这个自定义的view上。代码实现,在A页面中,我们在事件触发函数中

let next = self.storyboard?.instantiateViewController
WithIdentifier(“YourId”) as? UIViewController
next?.hidesBottomBarWhenPushed = true
self.navigationController?.pushViewController(next! ,animated: true)


4.故事版与代码、XIB结合
故事版和代码结合,如上面引用的代码,我们只需要给需要相关故事版设置一个故事版Id,然后实例化即可。v**上述代码是对与在同一故事版中的情况**。对于需要跳转到另外一个故事版,
“` let storyBd = UIStoryboard(name: “yourNewSb”, bundle: nil)

self.presentViewController(storyBd.instantiateInitialViewController() as! UIViewController, animated: true, completion: nil)“`。
代码与XIB的结合

let next = yourController(nibName: “yourController”, bundle: nil)
self.presentViewController(next, animated: true, completion: nil)

也可以在viewController 初始化

override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
super.init(nibName: “yourController”, bundle: nil)
}
调用时候可以使用 let next = yourController()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值