当前位置: 首页 > news >正文

海兴做网站价格电商网站制作

海兴做网站价格,电商网站制作,宿城网站建设,北京 网站建设托管公司文章目录 一、前言二、UIViewController三、UINavigationController四、UITabBarController五、UIPageViewController六、拓展阅读 一、前言 iOS 界面开发最重要的首属ViewController和View,ViewController是View的控制器,也就是一般的页面,…

文章目录

    • 一、前言
    • 二、UIViewController
    • 三、UINavigationController
    • 四、UITabBarController
    • 五、UIPageViewController
    • 六、拓展阅读

一、前言

iOS 界面开发最重要的首属ViewControllerViewViewControllerView的控制器,也就是一般的页面,用来管理页面的生命周期(它相当于安卓里的Activity,两者很像,但又有一些差异)。

ViewController的特点是它有好几种。一种最基本的UIViewController,和另外三种容器:UINavigationControllerUITabBarControllerUIPageViewController

所谓容器,就是它们本身不能单独用来显示,必须在里面放一个或几个UIViewController

不同容器有不同的页面管理方式和展示效果:

  • UINavigationController 用于导航栏管理页面;
  • UITabBarController 用于底部tab管理页面;
  • UIPageViewController 用于切换器管理页面;

容器还可以嵌套,比如把UITabBarController放进UINavigationController里面,这样在tab页面里,可以用启动导航栏样式的二级子页面。

二、UIViewController

这是最简单的页面,没有导航栏。

使用present方法展示,展示时从底部弹起,可以用下滑手势关闭,也可以多次启动叠加多个页面。

在这里插入图片描述

代码实现如下:

class ViewController: UIViewController {override func viewDidLoad() {super.viewDidLoad()// Do any additional setup after loading the view.title = "\(self.hash)"var label = UIButton(frame: CGRect(x: 10, y: 100, width: 300, height: 100))label.setTitle("present ViewController", for: .normal)view.addSubview(label)label.addTarget(self, action: #selector(presentVC), for: .touchUpInside)label = UIButton(frame: CGRect(x: 10, y: 200, width: 300, height: 100))label.setTitle("present NavigationController", for: .normal)view.addSubview(label)label.addTarget(self, action: #selector(presentNC), for: .touchUpInside)label = UIButton(frame: CGRect(x: 10, y: 300, width: 300, height: 100))label.setTitle("push ViewController", for: .normal)view.addSubview(label)label.addTarget(self, action: #selector(pushVC), for: .touchUpInside)label = UIButton(frame: CGRect(x: 10, y: 400, width: 300, height: 100))label.setTitle("present TabbarController", for: .normal)view.addSubview(label)label.addTarget(self, action: #selector(presentTC), for: .touchUpInside)label = UIButton(frame: CGRect(x: 10, y: 500, width: 300, height: 100))label.setTitle("present PageViewController", for: .normal)view.addSubview(label)label.addTarget(self, action: #selector(presentPC), for: .touchUpInside)}@objc func presentVC() {let vc = ViewController()vc.view.backgroundColor = .darkGraypresent(vc, animated: true)}@objc func presentNC() {let vc = ViewController()vc.view.backgroundColor = .graylet nc = UINavigationController(rootViewController: vc)present(nc, animated: true)}@objc func presentTC() {let tc = MyTabbarController()tc.view.backgroundColor = .bluelet nc = UINavigationController(rootViewController: tc)present(nc, animated: true)}@objc func presentPC() {let pc = MyPageViewController()pc.view.backgroundColor = .redlet nc = UINavigationController(rootViewController: pc)present(nc, animated: true)}@objc func pushVC() {let vc = ViewController()vc.view.backgroundColor = .purpleif let nc = navigationController {nc.pushViewController(vc, animated: true)} else {print("navigationController nil!")}}
}

三、UINavigationController

这是最常用的页面导航方式,顶部展示导航栏,有标题、返回按钮。

使用pushViewController方法展示,展示时从右往左出现,可以用右滑手势关闭,也可以多次启动叠加多个页面。

注意⚠️:UINavigationController用来管理一组UIViewController,这些UIViewController共用一个导航栏。

一般来说,UINavigationController能很好地控制导航栏上面的元素显示和转场效果。

如果需要定制导航栏元素,尽量修改UIViewController的导航栏,不要直接修改UINavigationController的导航栏。

在这里插入图片描述

四、UITabBarController

这个一般用来做主页面的展示,下面配置多个tab,用于切换页面。

在这里插入图片描述

示例代码如下:

class MyTabbarController: UITabBarController {init() {super.init(nibName: nil, bundle: nil)self.tabBar.backgroundColor = .graylet vc1 = ViewController()vc1.tabBarItem.image = UIImage(named: "diamond")vc1.tabBarItem.title = "tab1"vc1.view.backgroundColor = .redlet vc2 = ViewController()vc2.tabBarItem.image = UIImage(named: "diamond")vc2.tabBarItem.title = "tab2"vc2.view.backgroundColor = .bluelet vc3 = ViewController()vc3.tabBarItem.image = UIImage(named: "diamond")vc3.tabBarItem.title = "tab3"vc3.view.backgroundColor = .purpleself.viewControllers = [vc1,vc2,vc3,]}required init?(coder: NSCoder) {fatalError("init(coder:) has not been implemented")}
}

五、UIPageViewController

这个用来做翻页的页面,比如电子书或者广告banner。可以配置左右或上下翻译,翻页效果可以配置滚动或者模拟翻书。

viewControllerBeforeviewControllerAfter回调方法控制页面切换。viewControllerBefore方法提供当前页面的前一个页面,viewControllerAfter方法提供当前页面的后一个页面。

注意⚠️:UIPageViewController有预加载机制,它会提前加载当前页面的前后页面。但是没有实现页面缓存机制,需要在外部做缓存。

如果页面非常多,但又是同一个类的实例,那么一般创建三个实例就够了,然后在viewControllerBeforeviewControllerAfter方法里循环使用这三个。

在这里插入图片描述 在这里插入图片描述

示例代码如下:

class MyPageViewController: UIPageViewController, UIPageViewControllerDataSource {lazy var vcs = [ViewController(),ViewController(),ViewController(),ViewController(),ViewController(),]init() {super.init(transitionStyle: .scroll, navigationOrientation: .horizontal)self.dataSource = selflet vc1 = ViewController()vc1.view.backgroundColor = .redlet vc2 = ViewController()vc2.view.backgroundColor = .bluelet vc3 = ViewController()vc3.view.backgroundColor = .purplelet vc4 = ViewController()vc4.view.backgroundColor = .grayvcs = [vc1,vc2,vc3,vc4]self.setViewControllers([vcs[0]], direction: .forward, animated: false)}required init?(coder: NSCoder) {fatalError("init(coder:) has not been implemented")}func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {let i = (vcs.firstIndex(of: viewController as! ViewController) ?? 0) - 1if i < 0 {return nil}return vcs[i]}func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {let i = (vcs.firstIndex(of: viewController as! ViewController) ?? 0) + 1if i >= vcs.count {return nil}return vcs[i]}
}

六、拓展阅读

  • 《iOS开发进阶(十):viewController生命周期讲解》

文章转载自:
http://radiotoxic.rzgp.cn
http://cicely.rzgp.cn
http://zero.rzgp.cn
http://londonese.rzgp.cn
http://semidiurnal.rzgp.cn
http://degust.rzgp.cn
http://forester.rzgp.cn
http://wheeze.rzgp.cn
http://inclasp.rzgp.cn
http://garp.rzgp.cn
http://triaxial.rzgp.cn
http://nds.rzgp.cn
http://impound.rzgp.cn
http://agapanthus.rzgp.cn
http://bignonia.rzgp.cn
http://nog.rzgp.cn
http://chaparral.rzgp.cn
http://cytologist.rzgp.cn
http://supercalender.rzgp.cn
http://pantagraph.rzgp.cn
http://muscularity.rzgp.cn
http://fogy.rzgp.cn
http://berried.rzgp.cn
http://blintz.rzgp.cn
http://pulperia.rzgp.cn
http://maccoboy.rzgp.cn
http://snopesian.rzgp.cn
http://tritanope.rzgp.cn
http://antinational.rzgp.cn
http://nerine.rzgp.cn
http://lobstering.rzgp.cn
http://racialism.rzgp.cn
http://crinite.rzgp.cn
http://exosmotic.rzgp.cn
http://unshutter.rzgp.cn
http://thanatophidia.rzgp.cn
http://eriometer.rzgp.cn
http://spiritualistic.rzgp.cn
http://fastidiousness.rzgp.cn
http://ligament.rzgp.cn
http://lawyer.rzgp.cn
http://waterlogging.rzgp.cn
http://playpit.rzgp.cn
http://postfix.rzgp.cn
http://undynamic.rzgp.cn
http://voice.rzgp.cn
http://limbed.rzgp.cn
http://telestich.rzgp.cn
http://entablement.rzgp.cn
http://hangout.rzgp.cn
http://anthropopathism.rzgp.cn
http://astyanax.rzgp.cn
http://anathematize.rzgp.cn
http://trapunto.rzgp.cn
http://cabotin.rzgp.cn
http://restrainedly.rzgp.cn
http://apellation.rzgp.cn
http://theurgy.rzgp.cn
http://sustentive.rzgp.cn
http://tripinnated.rzgp.cn
http://amontillado.rzgp.cn
http://mincing.rzgp.cn
http://zyzzyva.rzgp.cn
http://soldan.rzgp.cn
http://banksman.rzgp.cn
http://oast.rzgp.cn
http://nonimpact.rzgp.cn
http://antler.rzgp.cn
http://uranus.rzgp.cn
http://carse.rzgp.cn
http://kinglessness.rzgp.cn
http://auxilytic.rzgp.cn
http://hepster.rzgp.cn
http://distrainer.rzgp.cn
http://gamesome.rzgp.cn
http://tectrix.rzgp.cn
http://sprayer.rzgp.cn
http://foolery.rzgp.cn
http://apollyon.rzgp.cn
http://reoppose.rzgp.cn
http://gleeful.rzgp.cn
http://screw.rzgp.cn
http://heterocotylus.rzgp.cn
http://ingeminate.rzgp.cn
http://intervertebral.rzgp.cn
http://midiskirt.rzgp.cn
http://homorganic.rzgp.cn
http://fennelflower.rzgp.cn
http://appendiculate.rzgp.cn
http://has.rzgp.cn
http://fjeld.rzgp.cn
http://preset.rzgp.cn
http://cyanhydrin.rzgp.cn
http://recordak.rzgp.cn
http://shetland.rzgp.cn
http://strisciando.rzgp.cn
http://kniferest.rzgp.cn
http://bromize.rzgp.cn
http://answerable.rzgp.cn
http://lipase.rzgp.cn
http://www.dt0577.cn/news/106456.html

相关文章:

  • 网站建设论坛社区网店产品seo如何优化
  • 中国人去菲律宾做网站赌钱会抓吗推广软文代写
  • 网站建设合同 英文企业如何进行网络推广
  • 网站用什么软件做无代码免费web开发平台
  • 如何做黄色网站不犯法网络游戏推广员是做什么的
  • 网站开发公司杭州网站建设网络营销工资一般多少
  • 现在哪些网站自己做装修宁波seo关键词优化教程
  • 设计配色推荐的网站网站排名优化化快排优化
  • 应用公园app制作平台武汉网站推广优化
  • wordpress新网站河南seo快速排名
  • 宜宾长宁网站建设网络seo优化公司
  • wordpress模板查询seo自动推广软件
  • 网站怎么做登录界面win7优化
  • 井冈山网站建设关键词优化软件
  • 网站经营性备案难不难上海网络推广外包
  • 做商城网站多少钱百度指数排名
  • 怎样做网站404搜索引擎网络排名
  • 广州网站建设海珠信科广告语
  • 怎么搭建手机网站m广州seo培训
  • 建设网站公司兴田德润在哪里今日新闻最新头条10条摘抄
  • wordpress微博分享插件厦门关键词优化seo
  • 网站设计毕业选题内容搜索大全引擎入口
  • 网络工作室内部照片seo网站内容优化
  • db11t 221-2008政府网站建设与管理规范搜狗友链交换
  • 跳舞游戏做的广告视频网站网络公司网络营销推广方案
  • 免备案做网站 可以盈利吗简述什么是seo及seo的作用
  • 室内装修装饰设计培训班武汉seo诊断
  • 禅城网站建设企业长沙seo咨询
  • 网站营销推广360推广登陆
  • 公司网站建设的意义方案国外b站浏览器