iOS中 : UIScrollView在导航控制器中的自动偏移的问题解决

当你在一个navigation下的UIViewController中直接添加一个UIScrollViewController时;UIScrollView会自动的向下偏移20个点(有可能会偏移64个点,84个点)-(取决于你的设置,反正是会偏移),导致这样的原因比较绕,但是解决的方法很简洁:

solution:

不要将UIScrollView 直接放在控制器上,可以先创建一个无关的UIView做炮灰;

在要放UIScrollView的地方,先放上炮灰UIView

   有UIView点垫背,再在上面放UIScrollView就不会偏移了;

详细的代码如下:

#pragma mark - viewDidLoad
- (void)viewDidLoad {
    [super viewDidLoad];

//    self.automaticallyAdjustsScrollViewInsets = NO;
//    self.navigationController.navigationBarHidden = YES;

   /// viewBack 解决totalView 的 自动偏移问题  (炮灰view)
    UIView * viewBack = [[UIView alloc] initWithFrame:CGRectMake(0, 64, 30, 30)];
    viewBack.backgroundColor = [UIColor greenColor];
  
    self.totalScrollView.backgroundColor = [UIColor purpleColor];
    [self.view addSubview:viewBack];
    [self.view addSubview:self.totalScrollView];// scrollView 通过懒加载初始化// _totalScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 64, 375, 667)];

}
时间: 2024-10-12 13:42:21

iOS中 : UIScrollView在导航控制器中的自动偏移的问题解决的相关文章

解决“带有导航控制器中加入UIScrollView后,UIScrollView向下偏移问题”

一.问题描述 如果在带有导航控制器的控制器中加入UIScrollView,我们可以发现UIScrollView的高度自动增加了64(正好是一个导航栏加上状态栏高度),然后在UIScrollView在加子视图,会造成子视图显示向下偏移了64的高度,如下图: 效果图: 二.解决方法 方法一:在控制器viewDidLoad方法中加入  self.automaticallyAdjustsScrollViewInsets = NO; 看这个UIViewController的这个属性你就明白了,此属性默认为

找到导航控制器中当前所有的视图控制器

//   栈:只有一口 ,先进后出 :push 入栈 : pop 出栈 : //    队列:有两个口 ,先进先出: //导航控制器: 容器 :实现视图控制器界面之间的跳转 : UINavigationController * nav = [[UINavigationController alloc]initWithRootViewController:firstVC]; //当你把一个视图控制器放入导航控制器时,视图控制器的属性navigationController会被赋值,记录nav:所以

iOS开发UI篇—导航控制器属性和基本使用

IOS开发UI篇—导航控制器属性和基本使用 一.导航控制器的一些属性和基本使用 1.把子控制器添加到导航控制器中的四种方法 (1) 1.创建一个导航控制器 UINavigationController *nav=[[UINavigationControlleralloc]init]; 2.设置导航控制器为window的根视图 self.window.rootViewController=nav; 3.添加 YYOneViewController  *one = [[YYOneViewContro

IOS开发UI篇—导航控制器属性和基本使用 - 文顶顶

原文  http://www.cnblogs.com/wendingding/p/3768622.html IOS开发UI篇—导航控制器属性和基本使用 一.导航控制器的一些属性和基本使用 1.把子控制器添加到导航控制器中的四种方法 (1) UINavigationController *nav=[[ UINavigationController alloc ] init ]; 2.设置导航控制器为window的根视图 self . window . rootViewController =nav

【iOS开发-24】导航控制器下不同视图控制器之间切换:利用CATrasition和view的layer层来实现自定义的动画效果

(1)这里的动画效果指的是界面切换的动画效果,我们常见的又淡入淡出,右出左进等等,当然还有一些高级动画,这种动画适合游戏类的,对于一般APP会显得太花哨. (2)我们在此处没有增加任何框架(QuartzCore)也没有导入什么头文件(QuartzCore.h),就可以直接用CATransiton(相当于是CAAnimation的子类)来创建一个对象,如animation1. (3)创建完之后我们就对这个动画对象进行动画设置,这里面主要是涉及到type属性,而且值有两种:一种是调用系统自带的一些效

ios入门笔记(导航控制器)

1.删除故事板中默认的视图控制器,和与之对应的.h.m文件 2.从对象库拖导航控制器对象到编辑器中(会好像加了两个场景) 3.添加两个类,第一个为UINavigationCOntroller子类关联到导航控制,第二个为UIViewCOntroller子类关联到根视图 和其他视图 (class是自己的命名,subclassof必须选择相应的父类) 4.关联完成后可以更改相应控制器的标签让其编程时更友好(这里的标签与底层的代码不关联) 5.导航控制器与视图控制器数据联系, 可在导航控制器.H中建立属

iOS: 使用KVO监听控制器中数组的变化

一.介绍: KVO是一种能动态监听到属性值的改变的方式,使用场景非常广泛,这里我只讲如何监听控制器ViewController中数组的变化. 二.了解: 首先我们应该知道KVO是不能直接监听控制器ViewController数组的变化的,需要将数组定义在模型中,然后控制器ViewController持有模型对象,通过该对象才能监听. 三.步骤: <1>在控制器ViewController类中定义一个模型类Model,并在该类中声明一个可变的数组属性modelArray并进行懒加载,其实它最终就

iOS开发 在某个视图控制器中 隐藏 状态栏

在plist文件中添加 key:View controller-based status bar appearance  为NO 在程序中  使用 [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade]; 可以将状态栏隐藏, 设置为 NO 则可将 状态栏显示

iOS9,导航控制器中的子控制器设置StatusBar状态失效的问题

iOS9之前控制StatusBar的两种方式: 第一种方式:全局控制StatusBar 1. 在项目的Info.plist文件里设置UIViewControllerBasedStatusBarAppearance为NO. 2. 使用[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];方法设置颜色. 第二种方式:基于控制器的方式控制StatusBar 1. 在项目的Info.plist