首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS系统中导航栏的转场解决方案与最佳实践

关于这个问题,只要提醒一下,大多数人都会反应过来是为什么。不过在实际开发过程中,总会有人忘记这一点。...导航栏的状态管理 虽然导航栏组件的 push 和 pop 动画给人一种每次操作后都会创建一遍导航栏组件的错觉,但实际上这些 ViewController 都是由一个 NavigationController...translucent 是指半透明,就好比我们可以透过一面有点磨砂效果的塑料墙看外面的风景,不能说看不见,但我们肯定看不清。...在转场的过程中隐藏原有的导航栏并添加假的 NavigationBar,当转场结束后删除假的 NavigationBar 并恢复原有的导航栏,这一过程可以通过 Swizzle 的方式完成,而每个 ViewController...这一节我们会以美团内部的解决方案为例,讲解如何实现一个流畅的导航栏跳转过程和相关使用方法。

2.4K30

【IOS开发基础系列】Storyboard专题

以这种方式,你可以创建超过 5 个的ViewController 给TabBarController,它将自动在Tabbar 上显示 More... 按钮。...我想将新的场景放在第一个Tab上,可以用拖拽 Tab 的方式改变它们的顺序。         运行程序,现在第一个 Tab 已经变成了NavigationController。         ...与之相仿,在 NavigationController 所包含的ViewController上,有一个 NavigationItem 对象,可用于设置导航栏。...但我想在单元格右边加一张图片以显示玩家级别(以星级的形式)。UITableViewCell的标准样式中不包含可以在单元格中放入一个ImageView,因此我只能选择定制设计。         ...3.1.3 在故事板中进行布局设计时,如果有导航栏、Tab栏,必须也要把高度预留出来 iPhone iPad各种控件默认高度 http://blog.csdn.net/chengyakun11/article

1.3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    iOS开发UINavigation系列四——导航控制器UINavigationController

    iOS开发UINavigation系列四——导航控制器UINavigationController 一、引言         在前面的博客中,我么你介绍了UINavigationBar,UINavigationItem...528168 二、导航控制器的创建和controller的管理         导航控制器是一个堆栈结构,只是其中管理的对象是controller,通过push与pop进行controller的切换,我们有两种方式可以创建导航控制器...) UIToolbar *toolbar; //导航中的返回手势对象 //iOS7之后,在导航中右划会进行pop操作,设置这个的enable可以控制设置手势是否失效 @property(nullable..., nonatomic, readonly) UIGestureRecognizer *interactivePopGestureRecognizer; 四、iOS8后导航的新特性 //这个方法是为了iOS...方法的命名统一,在导航中,其作用和push一样 - (void)showViewController:(UIViewController *)vc sender:(nullable id)sender;

    1.8K20

    UINavigationController 导航控制器概念属性方法

    . navigationBar方式可以调用) NavigationBar管理多个NavigationItem,和NavigationController一样都是用push和pop的方式推进推出各自管理的东西...NavigationItem包含多个UIBarButtonItem NavigationController管理着ToolBar,通过navigationController.toolbar方式调用 控制器管理的东西...(iOS7之后,在导航中右划会进行pop操作,设置这个的enable可以控制设置手势是否失效) @property(nullable, nonatomic, readonly) UIGestureRecognizer...property(nullable, nonatomic, weak) id delegate; 16、当一个controller被添加到导航中后,...如push后隐藏tabbar @property(nonatomic) BOOL hidesBottomBarWhenPushed; (3)获取管理它的导航控制器 @property(nullable,

    2.2K60

    【iOS】仿知乎日报,RxSwift-Part1-首页搭建

    由于对RxSwift的认识还不够深刻,所以项目中没有使用MVVM模型,以及编程思想也还没转变过来。...因此,我是在原来基础上,做了一些优化,虽然在转模型上没有那么优雅,但是比原来的安全。...使用Moya,可以优雅的封装Alamofire,而Moya/Rxswift可以将返回的结果转为Observable属性,进行监听。...那么针对上拉刷新,我是这样封装的,在我的MPApiService服务层中,定义了如下方法: func loadMoreHomeNewsList(date: String) -> Observable我也这么觉得,初入RxSwift,不打算封装太多层,怕把自己绕进去了,所以就先这样写了~ 4、设置导航栏的titile日期 效果说明:随着列表的滚动,sectionHeader的日期会显示在导航栏上

    2.4K10

    iOS初步集成极光推送后你还要做这些事

    ● 怎么在app内部开启、关闭通知? ● 你测试包(真机调试)收到通知后,怎么确定上架包也能收到消息?...在上面我抛出了一些问题,基本都是我们集成极光后前端需要处理的事情,下面我一个个解决这些问题。我个人没有总结太多,肯定有缺失,这里只是给不知道的伙伴列举一些常见的。若有误,请指出。...自定义消息,这个比较特殊,它必须是在app正在前台的时候才能收到消息,收到消息的位置而且不在代理中,而是在一个通知中。 ? 当注册极光后可以加入下面代码。注册一个通知。...如下代码,建议以userId或者服务器登录返回tag值注册,这样后台方便发送消息。...在上面我们一直说的都是在控制台直接发送消息,然而实际上我们推送都是后台开发人员以API的形式对接极光的服务器。

    2.8K50

    # iOS导航栏控制Tips

    2.从显示导航栏的页面Push到不显示导航栏的页面。 注意: 1.如果导航栏不显示时,系统的侧滑返回功能无效。...// 不显示动画,导航栏显示就比较突兀 [self.navigationController setNavigationBarHidden:YES]; // 显示动画,在侧滑时,导航栏显示就比较顺滑...注意: 如果重写了导航栏的leftBarButtonItem,那么侧滑返回功能也就失效了,需要侧滑返回功能需要自己处理。...比如,当页面用户输入了一些内容后,用户要点击返回,想要回到上一个页面时,提醒用户是否要缓存已经输入的内容。 如果我们重写了导航栏的返回按钮,那么处理这种情况就很Easy,不做赘述了。...我这边做了一些发散,因为一些类可能会有很多子类,那么想要保证父类以及子类的实例都只有一个,所以将方法做了改进。

    1.7K31

    iOS导航栏切换界面时隐藏和显示

    本文只讲最简单的实现方式,在单纯的UINavigationController下是表现ok的,但是如果同时还涉及到UITabbarController,就会有一些瑕疵,下面是要实现的效果,可以观察一下瑕疵在哪...YES,否则显示界面后就会瞬间出现导航栏,而达不到平滑的效果。...setNavigationBarHidden:NO animated:YES]; } 但是如果选择了动画隐藏,在通过Tabbar切换模块时就会出现一个很快的隐藏导航栏的动画,这个很烦,我尝试了很多方法...这个方法是直接隐藏了整个导航栏,所以如果要保存导航栏的一些返回按钮以及其他自定义的按钮,就需要自己在界面上去模拟添加,如果不想这么麻烦,也可以不隐藏导航栏,而是将导航栏的背景视图设为透明的: [...]; self.navigationController.navigationBar.shadowImage = [UIImage new]; 但是在切换到要显示导航栏的界面时,我们还需要将透明的导航栏背景还原回来

    3.9K30

    Cocoa编程中视图控制器与视图类详解

    ;   提示:UIViewController 有一个属性是navigationController,如果当前ViewController在某个NavigationController的堆栈中 的话(即是被推送过来的...在发送presentModalViewController: animated:消息后,一个新的视图控制器(其实是个ModalViewController)会滑动到屏幕并掌握控制权,直到使用dismissModalViewControllerAnimated...选项卡类的方便之处就是不需要象导航栏那样以栈的方式推入和弹出视图的操作,而是组建一系列的控制器(它们各自可以是UIViewController、UINavigationController、UITableViewController...编程中占据非常重要的位置,因此我们一定要掌握。...控制器加载视图过程 当调用视图控制器的view属性时,视图控制器会先调用loadView方法加载视图,因此,可以在loadView方法中创建所有的视图,这是比较好的编程惯例。

    5.1K50

    UI篇-关于单个页面屏幕旋转要注意的问题

    ,在手机方向不变的情况下,所以,最好把状态栏隐藏掉,回复的时候再显示出来。...UIInterfaceOrientationLandscapeLeft]; [[UIDevice currentDevice] setValue:value forKey:@"orientation"]; } # 全屏返回...按照上面的方法我确实达到了,单页面旋转,其他页面不旋转的效果,但是有个问题: 在页面不旋转的情况下,状态栏确会随着手机的旋转而旋转,着实蛋疼。目前不清楚为什么一样的设置,在两个项目中效果不一样。...之前说的那些都是都是在rootViewController之后去判断的,但是,在程序刚刚启动时做这些判断都是无效的。...我看着也醉了。但是却是有作用。 ---- 小结 关于屏幕旋转的问题,目前先写这些,后续如果有新的东西收获,会更新上去的。

    3.6K20

    iOS导航栏使用总结

    目录: 一、设置导航栏样式 二、解决自定义导航栏返回按钮后侧滑不可用问题 三、隐藏导航栏底部的分割线 四、导航栏引起的布局问题 相关文章:iOS状态栏的使用总结 一、设置导航栏样式 设置导航栏的样式可分为全局设置与局部设置...设置导航栏样式效果图 2.局部设置: 全局设置后,如果只有其中几个页面导航栏样式不同,那么我们可以使用局部设置。...setBarTintColor:[UIColor orangeColor]]; } 二、解决自定义导航栏返回按钮后侧滑不可用问题 iOS导航栏自带的返回按钮形式单一,所以大多情况下,我们都需要自定义导航栏返回按钮...天生我材必有用,千金散尽还复来。"...: //automaticallyAdjustsScrollViewInsets在11.0后失效,所以需要判断 if (@available(iOS 11.0,*)) { scrollView.contentInsetAdjustmentBehavior

    3.2K20

    iOS学习—— UINavigationController的返回按钮与侧滑返回手势的研究

    导航栏左上角的back按钮是附着在UINavigationController的UINavigationBar里自带的一个返回按钮,导航栏自带的back按钮的图层结构如下图所示。...,如果你的项目中没有需求要自定义返回按钮(虽然我觉得这并不太可能),那么你所需要的操作就非常简单了,不多说直接上代码。...失效时才识别,具体设置方法如下: //指定滑动手势在侧滑返回手势失效后响应 [self.tableView.panGestureRecognizer requireGestureRecognizerToFail...:[self.navigationController screenEdgePanGestureRecognizer]];  二 导航栏的back按钮   在了解导航栏的返回按钮之前,我们先了解一下导航栏管理导航栏上各类控件的...2.1 导航条上的按钮三兄弟 在前面我们也提到了,在导航栏上有左右按钮和返回按钮,官方称谓是backBarButtonItem、leftBarButtonItem、rightBarButtonItem

    6.9K60

    【iOS】基于Realm数据库的记账软件--钱包记账模块(四)终

    2.1、导航栏的设置 从图二可以看到,我们的导航栏“不见了“。这里的实现方式其实是隐藏了导航栏的背景,并且添加了一块高为64的View覆盖在原来的导航栏上。关于导航栏的隐藏,可以看一下这一篇博客。...]; // 设置导航栏背景为透明 [self.navigationController.navigationBar setBackgroundImage:[UIImage new]forBarMetrics...:UIBarMetricsDefault]; // 隐藏导航栏底部黑线 self.navigationController.navigationBar.shadowImage = [UIImage...MPBillManager shareManager] getBillsInAccount:_accountModel inAnMonth:self.selectedDate]; // 对查询的结果进行加工,以"...我使用这个框架,绘制了饼状图和折线图,分别对应以下两个类: // 饼状图 PieChartView // 折线图 LineChartView 讲真,这个框架学习成本还是挺高的。

    81220

    iOS仿微信相册界面翻转过渡动画

    点开微信相册的时候,想要在相册图片界面跳转查看点赞和评论时,微信会采用界面翻转的过渡动画来跳转到评论界面,好像是在图片界面的背面一样,点击完成又会翻转回到图片界面,这不同于一般的导航界面滑动动画,觉得很有意思...,于是自己学着做了一下,其实也很简单,下面是实现的类似的效果图: 在图片界面点击右下角的查看评论会翻转到评论界面,评论界面点击左上角的返回按钮会反方向翻转回图片界面,真正的实现方法,与传统的导航栏过渡其实只有一行代码的区别...我们再看看评论界面的代码,界面元素上有一个返回按钮,一个图片,一行文字,但是这个返回按钮的特殊在于,我们重新定义了导航栏的返回按钮,如果什么都不做,导航栏其实会自带一个带箭头的返回按钮,点击后就是正常的滑动回上一个界面...,不过这次要先设置动画,再进行pop,否则没有效果,而且pop的动画参数也要设为NO,可以看到这次的options的参数是从左边开始翻转,在视觉上就有一个反方向翻回去的效果。...以上,就是该过渡动画的全部实现过程了,其实无非就是加了两行代码而已,非常简单,但是偶尔用一下,还是能带来非常好的效果的~ 这里有我的示例工程:https://github.com/Cloudox/ReverseDemo

    1.1K30

    iOS透明导航栏的平滑过渡(进阶版)引实现过程结

    引 如我在传送门:iOS导航栏切换界面时隐藏和显示中所说,现在很多App的个人中心模块都是不保留导航栏的,会直接使导航栏透明,比如做的很好的QQ个人信息界面: 为什么说QQ做的很好呢?...Tabbar切换友好的效果: [self.navigationController setNavigationBarHidden:NO animated:NO]; 但是这样一来你在UINavigationController...,标题、返回按钮啥的都方便加,这也就是说不隐藏导航栏,而是要单独让导航栏背景透明; 2、在导航栏透明与否的界面间切换时透明度有渐变效果; 3、在UINavigationController体系和UITabarController...,包括返回按钮,因为我没有给导航栏添加任何其他按钮,所以这里一定是返回按钮,下属的 UILabel 就是 “返回” 两个字了。...的 Delegate 中添加一个处理,监控松手后时自动完成返回还是取消返回操作,同时使用 UIView 动画(关于 UIView 动画可以看我的这篇文章:传送门:iOS基础动画教程),在自动操作的那个时间内将透明度变为对应界面的导航栏透明度

    3.1K40

    iOS状态栏设置

    状态栏配置 iOS状态栏的设置有两种方式 这两种方式是根据UIViewControllerBasedStatusBarAppearance也就是View controller-based status...{ self.setNeedsStatusBarAppearanceUpdate() } 弊端 但这种配置有个弊端 就是 如果你的ViewController在NavigationController...NavigationController添加一个自定义的类,就稍显麻烦了,所以并不推荐用这种方式设置 设置背景色 改变方法有两种 系统提供的方法 navigationBar的setBarTintColor...上addSubView该UIView即可 UINavigationBar设置 上面说了状态栏 这里顺便把UINavigationBar也说了 我的配置 let appear = UINavigationBar.appearance...=true也就是透明时,如果用扇面的方式去掉navigationBar下的黑线,会导致状态栏颜色与navigationBar的背景色不同,暂没找到好的解决方法 6) 设置navigationBar背景透明的方式

    2.8K11

    常用开发技巧系列(一)

    前言:         在我们iOS开发的过程中,你要是知道一些特别的小技巧的话,其实是可以帮你省很多事的,当然这东西也不需要我们专门去记,估计没有几个开发人员喜欢死记硬背,有需要,上网找,边学边用才是技巧的正确的打开方式...默认为 nil NSString *const NSVerticalGlyphFormAttributeName; 搭配上面的阴影使用效果更好 */ 五:侧滑手势     这里说一下,要是在导航栏上...,当你push到下一个界面的时候,你要是使用的是系统的返回方式的话,那你的应用是自己会支持侧滑手势,你可以自己试一下 ,但在很多的情况下,我们的返回按钮是会自定义的。...    导航栏上面的那些事儿的话我先给大家一个链接,总结的比较的全面,具体知识大家而已去看看这个链接里面的内容,我们就说点小技巧,简单的,怎样把导航设置成透明。...[self.navigationController popViewControllerAnimated:YES]; } } else{ //present方式 [self

    880101
    领券