导航栏控制器遮挡视图

在iOS7及以上版本中,由于系统原因,视图在设置frame时会被导航栏控制器遮挡。解决方法是在代码中进行调整,确保视图的位置从导航栏下方开始计算。

iOS7.0后系统,使得self.view中的视图在设置frame时,会被导航栏控制器遮挡,即frame.y的计算不是从导航栏控制器下面开始计算,而是从屏幕左上角开始计算。所以为了解决这个问题,可以在添加如下代码进行解决。

// 通常写在base类的loadView方法中
// iOS7.0后,显示在导航栏之下,即frame.y从导航栏下面开始算起
if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)])
{
        // 不要往四周边沿展开,避免被导航栏遮挡
        [self setEdgesForExtendedLayout:UIRectEdgeNone];
        
        // 取消半透明色,避免被导航栏遮挡
        self.navigationController.navigationBar.translucent = NO;
        
        // 展开时不包含导航栏,避免被导航栏遮挡
        self.extendedLayoutIncludesOpaqueBars = NO;
        
        // 改变scrollView的contentInsets,避免scrollView,tableView,collectionView的contentInset.top = 64
        self.automaticallyAdjustsScrollViewInsets = NO;
}

示例效果图

UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, self.view.frame.size.width, 120.0)];
[self.view addSubview:imageView];
imageView.image = [UIImage imageNamed:@"image.jpg"];
未设置适配:                                                       已设置适配:

     



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

番薯大佬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值