热门搜索 :
考研考公
您的当前位置:首页正文

导航条重点注意集锦

来源:东饰资讯网
  • 从iOS7开始当scrollView在导航控制器,会自动调用边距64(手动用了一下UIEdgeInsetsMake(64, 0, 0, 0))调整的是scrollView里面的内容的位置,使内容偏移,不是调整scrollView本身的位置
    //从ios7开始当scrollView在导航控制器,会自动调用边距64
    self.automaticallyAdjustsScrollViewInsets = NO;
    //调用 contentInset时会调用scrollViewDidScroll
    self.tableView.contentInset = UIEdgeInsetsMake(244, 0, 0, 0);
  • 导航条和导航条里面的子控件设置透明度是没有效果的
  • 但是设置导航条和导航条里面的子控件的颜色的透明度是有效果的,控件的透明度和控件的颜色的透明度是两种概念,一般在开发中普遍设置控件的颜色的透明度,比如显示在导航条中间的文字,其实放的是一个UILabel,如果你设置UILabel的对象的透明度为0,还是会看见的,没有效果,但是如果你设置UILabel的文字的颜色的透明度为0的话,那么就出现效果了
  • 设置背景图片,必须得要UIBarMetricsDefault
  • 如果指定图片传为nil,会默认给设置一张默认图片,一般开发中经常传人的参数为[[UIImage alloc] init]
  • 导航条上的控件必须设置尺寸
// 导航条和导航条里面的子控件设置透明度是没有效果的.
// 下面两种方式隐藏导航条是不可行的
//  self.navigationController.navigationBar.hidden = YES;
//  self.navigationController.navigationBar.alpha = 0;
//调用 contentInset时会调用scrollViewDidScroll
self.tableView.contentInset = UIEdgeInsetsMake(244, 0, 0, 0);
  • 如何隐藏导航条
// 设置背景图片,必须得要UIBarMetricsDefault
    // 如果指定图片传为nil,会默认给设置一张默认图片,也不行
    // 隐藏导航条分2步
    // 第1步,隐藏背景图片
    [self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
    // 第2步,隐藏剩下那条线,通过隐藏阴影图片
    [self.navigationController.navigationBar setShadowImage:[[UIImage alloc] init]];

    UILabel *titleT = [[UILabel alloc] init];
    titleT.text = @"个人详情页";
    [titleT sizeToFit];
    // 要隐藏titleT通过设置alpha是没有效果的,得通过设置颜色的透明度
    //    titleT.alpha = 0; 没有效果
    //设置文字的颜色为透明
    [titleT setTextColor:[UIColor colorWithWhite:0 alpha:0]];
    self.navigationItem.titleView = titleT;

    UILabel *titleT = (UILabel *)self.navigationItem.titleView;
    [titleT setTextColor:[UIColor colorWithWhite:0 alpha:alpha]];
#pragma mark - UIScrollViewDelegate方法
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGFloat offsetY = scrollView.contentOffset.y - oriY; // tableView的偏移量

    // 图片剩下的高度
    CGFloat h = oriH - offsetY;
    if (h <= 64) { // 如果剩下的高度 <= 64
        h = 64;
    }
    // 改变约束值
    self.heightCons.constant = h;

    // 根据透明度传入图片
    // 根据一个颜色生成一张图片
    // 方法总结:类似的问题:找两个最大值,放 / 两端,比如alpha最大值为1,
    // 偏移量最大为136,放两端,剩下的变量与前面的数相乘,ok,
    CGFloat alpha = 1 * offsetY / 136;
    if (alpha >= 1) {
        alpha = 0.99;
    }
    // 根据颜色,生成一张图片
    UIImage *image = [UIImage imageWithColor:[UIColor colorWithWhite:1 alpha:alpha]];
    [self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];

    UILabel *titleT = (UILabel *)self.navigationItem.titleView;
    [titleT setTextColor:[UIColor colorWithWhite:0 alpha:alpha]];

}

Top