隐藏导航栏,偏移20PX
1:让ViewController在NavigationBar下面开始布局。
automaticallyAdjustsScrollViewInsets作用
当Controller上存在唯一一个UIScrollview及其子类时,会自动设置内边距,让scrollview占据整个视图,又不会让导航栏覆盖。当Controller上的第一个子视图不是UIScrollview及其子类时,不会自动设置内边距,原点会从状态栏开始,而不是导航栏下面,造成64px的偏移。解决方案有两种
/// 取消系统自动布局内边距
if ([nav respondsToSelector:@selector(setAutomaticallyAdjustsScrollViewInsets:)]) {
nav.automaticallyAdjustsScrollViewInsets = NO;
}
/// 取消扩展的边距
if ([nav respondsToSelector:@selector(setEdgesForExtendedLayout:)]) {
nav.edgesForExtendedLayout = UIRectEdgeNone;
}
/// 在iOS11取消内边距要使用新方法
UIScrollView *sv = nil;
sv.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
也许你已经发现了,当你隐藏了页面中的导航栏,并且在self.view上添加了一个tableview/scrollView时,你的tableview的位置会向下偏20个单位,并且你怎么找都找不到问题所在。。。因为这就不是你的问题。
你会发现在ios7.1及以上的系统下都会存在这个bug(7.1版本以下我没有试过,可以自己试试),解决办法就是不要直接把你的tableview加在self.view上,而是先要在self.view上放上一个任意的子视图,再将tableview添加在self.view上,这样tableview就不是self.view的第一子视图了。归结为一句话就是滚动视图不能作为父视图的第一子视图。
问题代码
self.navigationController.navigationBar.hidden = YES;
解决方法,就是不让滚动视图作为父视图的第一子视图。
// 添加占位视图
[self.view addSubview:[[UIView alloc] initWithFrame:CGRectMake(, , , )]];
解决键盘遮挡问题。一个思路就是:
在BaseViewController页面添加ScrollView。通过监听键盘事件来处理偏移。
UIScrollView 三个属性解析
一: scrollToTop
是否允许点击状态栏滚动到顶部。默认允许。
二:trancking(readOnly)
用于表示用户是否已经解除scrollView但可能还没有开始滚动。
在手指接触到scrollView的一瞬间发生三件事:
1 tracking属性变为yes。
2 触发拦截事件。
3 一个内置的计时器开始生效,用来检测在极短的时间内手指是否发生了移动
如果在时间间隔内没有发生明显的滚动。会将事件传递给subView。沿着正常的响应链传递。如果发生了比较大的移动,scrollView会处理这次的触摸事件。
三:delaysContentTouches:
默认的延迟处理手势是打开的。如果在极短的时间里能确定移动就自己处理。否则就传递给子视图进行处理。如果设置为"NO", scrollView立马触发- (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view方法 ,交给用户自己判断
四:canCancelContentTouches:
默认值为YES,如果为YES,当用户触摸手势已经被确定交给subview响应的时候 ,会立即调用- (BOOL)touchesShouldCancelInContentView:(UIView *)view ,交给此方法处理接下来的动作,如果此方法返回NO,则继续传递给subview,scrollView不会滚动,返回YES,则scrollView会滚动 ,subview 会取消处理这个事件 如果返回NO ,则scrollView不会滚动, subview响应这个触摸事件
参考链接: http://www.jianshu.com/p/9436c9a2cd1e
隐藏导航栏,偏移20PX的更多相关文章
- iOS 滑动隐藏导航栏-三种方式
/** 1隐藏导航栏-简单- */ self.navigationController.hidesBarsOnSwipe = YES; /** 2隐藏导航栏-不随tableView滑动消失效果 ...
- 安卓ROOT后禁用/隐藏导航栏/虚拟按键
安卓ROOT后禁用/隐藏导航栏/虚拟按键 提醒:提前装好EASY TOUCH 等类似工具. 用ROOT EXPLORER 或 ROOT BROWSER system\bulid.prop 最后加一行: ...
- AMScrollingNavbar框架(自动隐藏导航栏)使用简介
AMScrollingNavbar框架是一个可以上拉隐藏导航栏和下拉显示导航栏的框架,这个开源框架的调用也很简单,本章节就给大家介绍一下这个框架的用法. 一.下载及导入框架 AMScrollingNa ...
- iOS 隐藏导航栏下的黑线
一.找到导航栏下的黑线 // 寻找导航栏下的黑线 - (UIImageView *)findHairlineImageViewUnder:(UIView *)view { if ([view isKi ...
- iOS侧滑返回到隐藏导航栏的VC,导航栏会闪现一次
VCA:是一个隐藏导航栏的页面:VCA在ViewWillAppear生命周期函数中设置导航栏隐藏: //隐藏导航栏 [self.navigationController setNavigationBa ...
- iOS11关于隐藏导航栏后带有tableView界面出现,下移问题
//解决iOS11关于隐藏导航栏后带有scrollView界面出现,下移问题 if (@available(iOS 11.0, *)) { self.tableView.contentInsetAdj ...
- uwp - 上滑隐藏导航栏下滑显示
原文:uwp - 上滑隐藏导航栏下滑显示 好久没写博客了,因为忙着工作.昨天周末填坑需要做一个上滑列表数据时隐藏导航栏下滑时显示的效果,下面分享一下我的做法,希望能给你带来帮助. 思路是通过判断滚动条 ...
- iOS---实现简书和知乎的上滑隐藏导航栏下拉显示导航栏效果
因为自己用简书和知乎比较多,所以对其导航栏的效果比较好奇,自己私下里找资料实现了一下.这个效果的关键点在于下方可供滑动的内容的便宜距离inset的改变,以及滑动的scrollview代理的执行,废话不 ...
- 在隐藏导航栏的控制器中,调用UIIMagePickerController,出现导航栏变透明的问题
在隐藏导航栏的控制器中,调用UIIMagePickerController,出现导航栏变透明的问题 解决办法 #pragma mark - UIImagePickerController Delega ...
随机推荐
- 关于session报错问题。
刚开始一直报500错误,页面不提示,也没想着去查看日志文件.好几天了,一看日志,发现是这个问题.问了一下,是session的问题. 2017/07/25 16:57:49 [error] 2300#0 ...
- 官网类原型模板分享——Apple
苹果公司是美国一家高科技公司,引领全球数码产品设计潮流,是世界最具价值的品牌. 此原型正是取自苹果公司官网,网站主要以展示产品为主,排版方式采用大图配简练的文字,清爽简洁的同时突出产品优势,增大产品的 ...
- c++11多线程学习笔记之二 mutex使用
// 1111111.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #include ...
- jquery和js中走的弯路
1.$.each的错误用法 $.each的return xx 不能结束外层的函数,但return true/false可以 所以一般的: var result; $.each(json,functio ...
- linux 常用压缩打包和解压命令
## zcvf gzip jcvf bzip2 gunzip tar zxvf jxvf
- C语言基础课第四次作业
1.实验代码 7-2 打印九九口诀表 (15 分) #include<stdio.h> #include<math.h> int main(void){ int a, ...
- 2018.10.23 hdu4745Two Rabbits(区间dp)
传送门 区间dp经典题目. 首先断环为链. 然后题目相当于就是在找最大的回文子序列. 注意两个位置重合的时候相当于范围是n,不重合时范围是n-1. 代码: #include<bits/stdc+ ...
- hdu - 1072(dfs剪枝或bfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1072 思路:深搜每一个节点,并且进行剪枝,记录每一步上一次的s1,s2:如果之前走过的时间小于这一次, ...
- AE(ArcEngine)定制工具Tool工具箱
using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServi ...
- webuploader传递参数
实际开发过程中,比如我有个工单提交系统,提交工单的时候用webuploader上传图片,如果工单的ID是自增长类型的,那么我在上传图片的时候肯定需要关联上工单的id,这时候就需要通过webupload ...