IOS7 TableView适配

本文详细介绍了iOS7中实现全屏应用的三个关键属性:edgesForExtendedLayout、extendedLayoutIncludesOpaqueBars 和 automaticallyAdjustsScrollViewInsets。通过具体示例说明了如何调整这些属性来解决导航栏和状态栏的显示问题及UITableView的cell布局问题。

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

    原因是 

      ios7group样式的tabelView的第0组第0cell,在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 35000);

  

转载于:https://www.cnblogs.com/wangxiaofeinin/p/3532831.html

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值