zoukankan      html  css  js  c++  java
  • iOS UITableviewWrapperView 和 automaticallyAdjustsScrollViewInsets属性

      关于在navigationController下面使用tableView在竖直方向会遇到frame的y值的困惑,
    会遇到视图控制器的这个属性:automaticallyAdjustsScrollViewInsets.
      apple的解释:
     

    A Boolean value that indicates whether the view controller should automatically adjust its scroll view insets.

     

    The default value of this property is YES, which allows the view controller to adjust its scroll view insets in response to the screen areas consumed by the status bar, navigation bar, and toolbar or tab bar. Set to NO if you want to manage scroll view inset adjustments yourself, such as when there is more than one scroll view in the view hierarchy.

     

      这是指示ViewController是否自动调整subview中的scrollView位置的布尔变量。
      此属性的默认值是YES,它使得视图控制器来调节响应的状态栏,导航栏占用的屏幕区域的scrollview,和toolbar或tabBar。,如果你要自己管理插入调整scrollView就设置为NO。

     在iOS7以下系统,UITableViewCell.superview就是UITableView,但在IOS7中,cell上面还多了一个UITableViewWrapperView,所以需要UITableViewCell.superview.superview获取UITableView
     
    iOS 获取操作系统的版本

     1 [[[UIDevice currentDevice] systemVersion] floatValue] 

     
     1 UITableView *tableView;
     2 
     3      float Version=[[[UIDevice currentDevice] systemVersion] floatValue];
     4 
     5     if(Version>=7.0)
     6 
     7     {
     8 
     9        tableView = (UITableView *)self.superview.superview;
    10 
    11     }
    12 
    13     else
    14 
    15     {
    16 
    17         tableView=(UITableView *)self.superview;
    18 
    19     }
    20 
    21      NSIndexPath *indexPath= [tableView indexPathForCell:self];
    22 
    23     indexPath = [NSIndexPath indexPathForRow:kImage1IndexinSection:indexPath.row];
    24 
    25  

    但是今天所做的项目里用到了tabbarController中一个VC的childVC中使用tableView时候,在切换tabbar的VC时,ChildVC的table会掉64(navigationBar的高度),设置automaticallyAdjustsScrollViewInsets 也无效,

    所以只好拿到UITableviewWrapperView强行设置frame:

    1 for (UIView *subview in tableView.subviews)
    2 {
    3     if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewWrapperView"])
    4     {
    5         subview.frame = CGRectMake(0, 0, tableView.bounds.size.width, tableView.bounds.size.height);
    6     }
    7 }

    应该是automaticallyAdjustsScrollViewInsets的问题,以后研究

    参考链接: http://stackoverflow.com/questions/27671324/uitableviewwrapperview-and-uitableview-size-differs-with-autolayout

  • 相关阅读:
    main 函数返回值
    软件架构师必备能力
    Thinkpad S430 3364-A59 (笔记本型号)加内存条过程
    Mysql char(10) 与 varchar(10)的区别
    centos6.5 安装openresty
    AndroidStudio不自己主动加入新创建的文件到VCS
    【HDU 5647】DZY Loves Connecting(树DP)
    linux 新进程的创建
    如何处理Android中的防缓冲区溢出技术
    nyoj 119士兵杀敌(三)(线段树区间最值查询,RMQ算法)
  • 原文地址:https://www.cnblogs.com/A--G/p/5149000.html
Copyright © 2011-2022 走看看