iOS开发中当TableView遇到导航栏自动下移的解决方案

在iOS的开发中,当TableView遇到导航栏后自动下移的解决方案:

文章转载至 :http://www.code4app.com/blog-826368-806.html

方案一:

    在视图控制其中使用了navigationController后,时而会出现tableView或collectionView下移的情况,通常会自动下移64个像素,那么在这种情况下,我们可以通过下面的这个属性来关闭tableView的自动适配布局:

    用代码修改:

?

1

self.automaticallyAdjustsScrollViewInsets = NO;// 默认是YES

    如果用SB的话可以做一下修改:

 

方案二:

    当出现tableView整体下移时,我们可以在 Xcode 中修改每个 View,将他们上移20个像素(状态栏高度)或者64个像素(状态栏+导航栏高度)。其实苹果早已经考虑到这个问题了,早在 iOS 7 SDK 中为 ViewController 提供了一个 edgesForExtendedLayout 新属性。如果将这个属性设置为UIRectEdgeNone,则 viewController 的所有子视图都会自动调整。眼下暂时也适用于不同系统版本代码更迭出现状况时使用。

?

1

self.edgesForExtendedLayout = UIRectEdgeNone;// 推荐使用

    为什么要推荐使用这个属性来设置呢,这个属性和其他的不同,因为它是一个枚举(设置起来也比较方便,它可以根据我们自己的需要去设置)

?

1

2

3

4

5

6

7

8

typedef NS_OPTIONS(NSUInteger, UIRectEdge) {

    UIRectEdgeNone   = 0,

    UIRectEdgeTop    = 1 << 0,

    UIRectEdgeLeft   = 1 << 1,

    UIRectEdgeBottom = 1 << 2,

    UIRectEdgeRight  = 1 << 3,

    UIRectEdgeAll    = UIRectEdgeTop | UIRectEdgeLeft | UIRectEdgeBottom | UIRectEdgeRight

} NS_ENUM_AVAILABLE_IOS(7_0);

 

方案三:

   我们也可以通过设置导航栏是否是半透明的(Translucent)属性来修改TableView的下移情况,该属性默认是YES,只需将其修改为NO就可以了:

   用代码修改:

?

1

self.navigationController.navigationBar.translucent = NO; // 默认是YES

   如果用SB的话可以进行如下修改:

 

 


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值