zoukankan      html  css  js  c++  java
  • IOS7 TableView适配

    ios7下的app都是全屏的,意思就是所有控制器的view默认都是从屏幕的(0,0)开始。

    为了达到全屏效果的app,官方为UIviewController增加了几个属性:

    1 @property(nonatomic,assign) UIRectEdge edgesForExtendedLayout NS_AVAILABLE_IOS(7_0); // Defaults to UIRectEdgeAll
    2  @property(nonatomic,assign) BOOL extendedLayoutIncludesOpaqueBars NS_AVAILABLE_IOS(7_0); // Defaults to NO, but bars are translucent by default on 7_0.  
    3  @property(nonatomic,assign) BOOL automaticallyAdjustsScrollViewInsets NS_AVAILABLE_IOS(7_0); // Defaults to YES

          
    一:
      属性edgesForExtendedLayout,意思大概是边缘向四周展开

      edgesForExtendedLayout 值是结构体,默认值是 UIRectEdgeAll,

      也就是说,当一个控制器要往父控制器添加的时候,上下左右填充满整个屏幕。

      例如1:

      UIViewController添加到uiNavController上时,uiviewcontroller的y值 == 状态栏的的y

      这时候设置 self.edgesForExtendedLayout = UIRectEdgeNone;

      uiviewcontroller的y值 == 导航栏y + 导航栏height

      /*

       这种情况还可以设置,导航栏的bar的透明度属性translucent为no

       self.navigationController.navigationBar.translucent = NO;

         translucent属性在ios6之前默认为no,

       而在ios7下的导航栏默认却是半透明的,为yes,所以该属性不会占据空间。

      */

      例如2:

      UITableViewController添加到UITabBarController上时,UITableViewController的底部一部分cell会被TabBar挡住

      这时候设置self.edgesForExtendedLayout = UIRectEdgeNone;

      TabBar的y值 == CGRectGetMaxY(UITableViewController)

    二 : 

      self.extendedLayoutIncludesOpaqueBars = YES;意思展开包括状态栏

    三:

          self.automaticallyAdjustsScrollViewInsets = YES;

      当设计到scrollView、tableview时,在设置完数据的时候,内部会改变contentInsets的top值为64 例如:group样式的tableView在有导航栏的控制器下,第0组的头部会多出一部分高度h原因是 ios7下group样式的tabelView的第0组第0个cell,在tableview中的y值为35!!!

    并且在设置完cell数据之后,系统默认会执行

    self.automaticallyAdjustsScrollViewInsets = YES;

    也就是tableview的contentInset.top = 64;所以 第0组第0行cell的y值 = 64 + 35.要达到第0组第0行cell的y值 = 导航栏底部 的效果。就要在cell设置数据之前,

               tableView.contentInset = UIEdgeInsetsMake(- 35, 0, 0, 0);

    这样在cell在设置完数据后,系统内部改变top值增加64,就恰好达到效果。若要达到每个group头部等高效果,    

            tableView.sectionHeaderHeight = cellSectionHeight;

            tableView.sectionFooterHeight = 0;  tableView.contentInset = UIEdgeInsetsMake(cellSectionHeight - 35, 0, 0, 0);

    原文:http://wyfpkx.blog.163.com/blog/static/17260843920142422043416/

  • 相关阅读:
    Which is the best software for MANET simulation?
    CORE—Common Open Research Emulator—INSTALL—Network Emulator
    Open-Source Network Simulators—CORE—Cloonix—GNS3—IMUNES
    mutt—linux命令行发带附件邮件—message file too big
    幼儿园复读生
    【codeforces 779D】String Game
    【BZOJ 1014】 [JSOI2008]火星人prefix
    【t004】切割矩阵
    【BZOJ 1015】 [JSOI2008]星球大战starwar
    【BZOJ 1016】[JSOI2008]最小生成树计数(搜索+克鲁斯卡尔)
  • 原文地址:https://www.cnblogs.com/chengfang/p/4181395.html
Copyright © 2011-2022 走看看