zoukankan      html  css  js  c++  java
  • iOS 7 使用导航控制器后有关根视图高度及位置的那些事

    自从iOS7 导航控制器导航控制条的 translucent属性默认为YES 后,在项目中有时候总会遇到这样或那样有关视图控制器的根视图位置引发的问题。比如在导航控制器的RootViewController里的时候,这时你会发现如果你在

    - (void)viewDidLoad

    {

       NSLog(@"%f",self.view.bounds.size.height);

    }

    你会发现值是568

    而在其上添加视图的坐标y值的零点也是屏幕的最上边

    但是为什么我们在根视图上添加tableView等滚动视图时候会再导航条下面位置呢?

    这是因为在iOS7SDK后,添加了一个属性 self.automaticallyAdjustsScrollViewInsets 默认YES ,也就是说SDK中用这个属性把TabelView的偏移值改变了

    把self.automaticallyAdjustsScrollViewInsets 值改变为NO; 则就从零点开始了

    如果我们把 self.navigationController.navigationBar.translucent 设置为NO 则零点就是从64位置开始也就是导航条下面开始,不过此时self.view的高度仍然是568;

    但是如果ViewController不是导航控制器的RootViewController 

    - (void)viewDidLoad

    {

       NSLog(@"%f",self.view.bounds.size.height);

    }值是568;

    -(void)viewWillAppear:(BOOL)animated

    {

    NSLog(@"%f",self.view.bounds.size.height);

    }值是504(前提也是self.navigationController.navigationBar.translucent为NO;

    这是一个很头疼的问题,为啥和RootViewController的结果不一样,不知道是不是Xcode的bug?

    因此在使用的时候需要谨慎对待,小心确定。

  • 相关阅读:
    codeforces C. Cows and Sequence 解题报告
    codeforces A. Point on Spiral 解题报告
    codeforces C. New Year Ratings Change 解题报告
    codeforces A. Fox and Box Accumulation 解题报告
    codeforces B. Multitasking 解题报告
    git命令使用
    shell简单使用
    知识束缚
    php 调用系统命令
    数据传输方式(前端与后台 ,后台与后台)
  • 原文地址:https://www.cnblogs.com/zhaopengtao14/p/4131677.html
Copyright © 2011-2022 走看看