下面将会结合一个实际的效果来简单的介绍一下TabBar和NavigationBar, 然后说一下用我们的storyboard和纯代码如何配置我们的NavigationBar, 上一篇博客中提到了如何用Navigation...下面的视图控制器之间的关系是如何用storyboard拖出来的,在之前的博客中有所提及,在这小编就不赘述了。 ViewController之间的关系大致入下图: ? ...3.每个Navigation Controller中又对应着一些ViewController, 这些ViewController之间我们可以通过按钮控制NavigationController来进行切换...接下来会为每个导航控制器配置NavigateBar, 在一个NavigationController中只有一个NavigationBar, 而在一个NavigationController下的各个ViewController...在View中展示数据的时候,TableView用的也是蛮多的。 对于TableView如何使用,在后面的博客会进行详细的介绍。
对于父级VC与子级VC分别有navigationController的情况,即不是使用push方式加载子VC,而是通过AddChildViewController的方式添加的场景,则父级导航条会覆盖在子级导航条上面...,所以需要在载入时把父级导航条做隐藏处理: 1.2 navigationItem 在含有导航条的ViewController中,VC的navigationItem与VC.navigationController...: (UIViewController*) viewController animated: (BOOL)animated{ //如果进入的是当前视图控制器 if (viewController... 方法一:(自定义视图的方法,一般人也会采用这样的方式) 就是在导航向上添加一个titleView,可以使用一个label,再设置label的背景颜色透明,字体什么的设置就很简单了...2.5.8 Tabbar的显示与隐藏 Tabbar的隐藏函数,其实只在Nav Push的之前调用时起作用 //隐藏Tabbar [viewController setHidesBottomBarWhenPushed
如何快速的查看一段代码的执行时间。...UINavigationController 有个 Property,是一个存储所有 push 进 navigationcontroller 的视图的集合,是一个栈结构,当我们要 pop 到某个 ViewController...的时候,直接用 for in 去遍历 viewControllers 即可: for (UIViewController viewController in self.navigationController.viewControllers...,我们使用#if DEBUG这种定义模式来区分,那么在默认Pods中是无效的。...需要使用以下方法打开Debug的编译配置: post_install do |installer_representation| installer_representation.pods_project.targets.each
新的 TabBarController 已经事先配置了两个ViewController,每个Tab 按钮一个。...但在某些时候我们必须通过手动创建TabbarController,这样就必须知道在不使用模板时应该如何去做。 ...运行程序,现在第一个 Tab 已经变成了NavigationController。 在我们将实际的功能加入 app 之前,让我们整理一下我们的故事板。...但我们并没有配置它,因此会有这个警告。 模板 cells 是一种很酷的故事板特性。它远胜于原来的nib 文件。...4.2 代码实例化故事板中的VC 如何装载Storyboard中的ViewController?
之前在网上搜过有关侧滑手势的技术博客,发现大多比较散乱,甚至有很多都是简单的粘贴复制,并不全面。侧滑返回的操作效果与左上角的back按钮是一样的,所以一起放在这里进行探讨。...= NO; //禁用侧滑手势 1.2 侧滑使用注意 侧滑手势在使用中需要注意的一点就是在项目开发中,我们一般是采用的UITabBar + UINavigationController架构,对于每一个...),而其他的viewController则不需要禁用侧滑手势。...= YES; } } 1.3 侧滑手势的获取 如果一个页面上有多个手势,我们要如何去获取策划手势,并对其进行操作呢?... screenEdgePanGestureRecognizer]]; 二 导航栏的back按钮 在了解导航栏的返回按钮之前,我们先了解一下导航栏管理导航栏上各类控件的UINavigationBar
关于iOS组件化网上资料太多,这里只是从个人观点说明一下怎么使用组件化和使用组件化的优点和缺点 首先下载CTMediatorDemo Demo的目录结构 ?...项目在没有使用CTMediator之前模块间的关系是这样的 ?...组件化的优点 举个例子,公司某个App有一个登录模块,过一段时间需要研发一个新的App,为了节省时间就用之前App有的登录模块,就需要把登录模块抽取出来做成组件,可能某些同学就会问,这不是私有化Pod库就能实现吗...接着说即使把登录模块私有化Pod后,那么假如在B项目中ModuleA,ModuleB,ModuleC都需要验证,如果没有登录就调用登录模块,哪又回到了之前耦合的问题上了ModuleA,ModuleB,ModuleC...3.如果公司有2个以上开发人员并且时间相对充裕的情况下,在公司业务相对稳定,的情况下可以考虑使用组件化。 4.公司有2个及以上App,有重合的业务可以优先考虑先把重合业务抽取成组件。
许久不写UI,对UI的很多东西都生疏了,最近使用导航栏的各种场景做一些总结。 1.导航栏的显示与隐藏 导航栏的显示与隐藏,分两种情况: 1.从不显示导航栏的页面push到显示导航栏的页面。...; self.navigationController.interactivePopGestureRecognizer.delegate = self; [self.navigationController...2.重写导航控制器的Push方法,在push之前,设置navigationItem.backBarButtonItem。...,直接使用系统的pop方法。...viewController) { return; } // 如果要push的界面不是 parentClass以及其子类的实例,则按照方法1处理 if (!
目前资讯新闻类的移动端项目的主流App框架基本都是标签式的,这种类型的导航设计技术上基本上都是通过TabBar + NavigationController框架进行搭建完成,大家经常使用到的微博、今日头条等都是采用...今天我们的主要任务就是搭建我们TabBar,如果采用系统自带的UITabBarController(官网文档戳这里),在使用过程有一下几点需要注意: 每一个barItem都必须对应一个ViewController...添加itemBar对应的ViewController的方法有两种:一是使用UITabBarController的 方法设置;二是用UIViewController的 addChildViewController...程序一起动就调用load方法 Initialize方法:初始化类,当第一次使用这个类或者子类的时候调用 viewdidload方法:当viewcontroller第一次即将显示的时候加载。...具体如何创建和配置PCH文件详情可以参见:ios中pch文件的创建与配置 下面是在编写PCH文件需要注意的一些情况: #ifndef PrefixHeader_pch #define PrefixHeader_pch
设置为YES时 ViewController的配置优先级高于Application的配置 UIViewControllerBasedStatusBarAppearance设置为NO时 那么只取Application...的配置,ViewController的配置不生效 也可以在Info.plist添加默认的状态栏样式 Status bar style设置为UIStatusBarStyleLightContent或UIStatusBarStyleDefault...就是 如果你的ViewController在NavigationController中,那么直接在ViewController设置是不生效的,只能在NavigationController中设置 所以如果你用的...Storyboard中配置的NavigationController话,就必须为NavigationController添加一个自定义的类,就稍显麻烦了,所以并不推荐用这种方式设置 设置背景色 改变方法有两种...; 注意 1) appear.translucent配置在早期系统会崩溃,不建议配置,建议在ViewController中配置 2) 在translucent=true也就是透明时,barTintColor
)和UIViewController紧密的结合了起来 总结: NavigationController管理的东西: NavigationController管理多个Controller NavigationController...initWithNavigationBarClass:(nullable Class)navigationBarClass toolbarClass:(nullable Class)toolbarClass; (2)使用系统默认的导航栏和工具栏...继承该父类的控制器调用此方法都可以隐藏push来的控制器底部的TabBar - (void)pushViewController:(UIViewController *)viewController animated...:(BOOL)animated { // 这里的参数viewController就是即将被push进来的控制器 viewController.hidesBottomBarWhenPushed...UIViewController *)viewController animated:(BOOL)animated; (2)视图已经展示时调用的方法 - (void)navigationController
简介 在项目中经常碰到首页顶部是无限轮播,需要靠最上面显示.有的设置导航栏为透明等一系列的方法,这个可以借助第三方.或者干脆简单粗暴的直接隐藏掉导航栏.可是push到下一个页面的时候是需要导航栏的,如何做了...第一种做法 注意这里一定要用动画的方式隐藏导航栏,这样在使用滑动返回手势的时候效果最好,和上面动图一致.这样做有一个缺点就是在切换tabBar的时候有一个导航栏向上消失的动画. - (void)viewWillAppear...setNavigationBarHidden:NO animated:animated]; } 第二种做法 设置self为导航控制器的代理,实现代理方法,在将要显示控制器中设置导航栏隐藏和显示,使用这种方式不仅完美切合滑动返回手势...:(UIViewController *)viewController animated:(BOOL)animated { // 判断要显示的控制器是否是自己 BOOL isShowHomePage...= [viewController isKindOfClass:[self class]]; [self.navigationController setNavigationBarHidden
前言 有时候,我们会需要在整个项目中,使某一个ViewController支持屏幕旋转,而其他的ViewController并不能自动旋转。这是一个很常见的需求,下面就屏幕旋转相关问题做个小结。...不可使用self.view.frame.size.width self.view.frame.size.height,这样会出现第一次旋转出现上下部分白边的Bug,需要使用 [UIScreen mainScreen...viewcontroller里的设置 如何实现某一个页面屏幕旋转,而其他页面不旋转 首先, - (BOOL)shouldAutorotate 必须在 self.window.rootViewController...所以页面支持的方向是一定要设定的,不设定的话就是默认的:左中右。 屏幕旋转中的其它问题 如何应用程序刚启动时判断设备方向呢?...之前说的那些都是都是在rootViewController之后去判断的,但是,在程序刚刚启动时做这些判断都是无效的。
之前写过一篇关于iOS 组件化之CTMediator的文章,小项目中使用起来还是不怎么方便,改进了下,取名为DRouter吧,目录结构是这样的 ?...; } else { // 这里处理异常场景,具体如何处理取决于产品 NSLog(@"%@ 未能实例化页面", NSStringFromSelector(_cmd...:completion forKey:@"callback"]; return [self mediator_AModulePage1:params]; } @end Controller中使用...if(self.backBlock){ [self.navigationController popViewControllerAnimated:YES];...self.backBlock(@{@"value":@"A_Module_Page1_Block"}); }else{ [self.navigationController
---- viewController的生命周期 单个viewController的生命周期 initWithCoder:(NSCoder *)aDecoder:(如果使用storyboard或者xib...一个VC 在执行viewWillDisappear 或者viewDidDisappear 方法时都是出栈之后才执行的,也就是说 已经不在 self.navigationController 的viewControllers...中了,而一个 VC 执行viewWillAppear 时必定是 self.navigationController 的 topViewController即栈顶的视图。...一个很常见的问题,我们需要在VC被销毁的时候处理一些事情,可是 viewWillDisappear 不管是入栈新的视图还是出栈当前视图都会被调用,无法判断,结合我之前说的原理,我们可以利用下面这个方法判断当前...中跟试图的初始化是需要时间的,你在VC根试图初始化之前调用绘制UI的方法当然是不会有效果出现的。
XCode4.2.1 使用NavigationController实现View切换 现在网上有很多关于NavigationController实现页面之间导航,但是大部分都是老版本的实现方式,基于Window...老版本实现的NavigationController项目源代码 ?...但是新版的没有这个模板比如Single view application的项目直接生存ViewController不带Window和 mainWindow.xib文件 ?...加入代码后显示的界面就会出现导航栏了 如果要设置导航栏标题的内容,只需修改ViewController.m,你第一个载入的rootViewController ? 运行的效果 ? ?...第二view上面导航按钮返回上一个view的功能不需要使用代码实现,当然写代码也可以,参考代码如下 ? 希望对刚刚学习iphone开发的有所帮助,我也是刚刚开始学习。一起学习一起进步。
最近几周,我想了很多有关如何提高我对 MVVM 架构的理解,并且创建一个可维护的开发框架。所以我看了 Krzysztof Zabłocki 关于软件架构的视频, 这个视频太赞了。...总目标 在选择哪一个架构之前,我会制定一个包含这个架构所关注的能解决什么目标的列表,这是从我多年 Java 项目开发中总结出的。这帮助我定义我们架构的优点。下面是促使我测试的要点。...MVVM 这种架构和我之前项目的架构很像,唯一不同的是 VC (ViewController) 必须接受一个兼容的 ViewModel(通过既定协议)。...这个内容的显示是通过 FlowController 枚举配置的。 我不会讲太多我决定构建的内容有多混乱,因为我在很短的的时间( 8 小时)内测试我的抽象极限,现在正在完善的代码,而不是增加项目。...我的下一篇文章将是如何建立有效的测试,简单易维护。
之后打开 ViewController.swift。...rootView: ContentView()) 3 4 navigationController?....如何在 Swift UI 直接用上 UINavigationController 和 UITabBarController。...NavigationController 外置的另一方式 如下写法能让 SwiftUI 内部识别到外层 UINavigationController,无需包裹 NavigationView 即可使用 NavigationLink...,同时还能使用 UINavigationController 更完善的方法。
最近遇到二个键盘会自动弹出的问题: 1、UIWebView加载网页后,点击网页内的链接在UIWebView内进行跳转时,键盘自动弹起; 2、调用选择照片时,iPod上选择照片后也会自动弹出键盘,比如从图库进到具体某个文件夹内...,在导航切换的时候隐藏键盘并发送关闭键盘的事件 -(void)navigationController:(UINavigationController *)navigationController willShowViewController...:(UIViewController *)viewController animated:(BOOL)animated { viewController.contentSizeForViewInPopover...:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController...sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil]; } 因为接触ios也不算特别多,暂时就使用了上述的方法来处理了
当然图片多了能够使用clipsToBounds剪裁。 (2)但。...(3)还有一个重要的知识是对navigationItem的设置,这个属性和navigationController是平级的,所以直接能够用self.navigationItem使用。...在ViewController.m中: #import "ViewController.h" #import "SecondViewController.h" @interface ViewController...则自己主动repeat图片 //UIBarMetricsCompact-竖屏没有,横屏有,相当于之前老iOS版本号里地UIBarMetricsLandscapePhone //UIBarMetricsCompactPrompt...事实上是导航控制器在控制,在里面的元素都能够通过navigationController属性获取到它们所在的导航控制器 //所以(2)获取到导航控制器之后,使用Push的那个方法,往栈里面放一个视图控制器
:(NSInteger)section { return 0.01; } 结束当前界面,进入新的界面,使用导航的pushViewController进入下一个页面,需要删除navigationController.viewControllers...中保存的当前页面 [self.navigationController pushViewController:vc animated:YES]; //结束当前界面 __weak typeof...,最原始的就是frame,如果是使用约束,也需要至少指定左、上,宽、高,否则约束会出现异常(xib中配置约束或者使用Masonry配置约束),比方设置一个view在屏幕的底部的约束: [view mas_makeConstraints...,搜索框的背景修改,网上都有很多奇淫技巧,发现都不正规,正规的改法往往很简单,原因在于控件有很多层次,由于没有找到背景所在的正确的层级,所以你发现很多的设置不生效,关键的点是经常使用Debug View...的预加载 [viewController load]; //[viewController loadViewIfNeeded];