iOS:记三回导航栏平滑过渡的得以达成

2019-12-14 07:07栏目:bob体育app
TAG:

供给:想在每行结尾加多   '卡塔尔(قطر‎,

UltraEdit 换行替换,ultraedit换行替换

急需:想在每行结尾增多   '卡塔尔国,

图片 1

 

 

方案:在查找栏填写(^r^n卡塔尔(英语:State of Qatar)  替换栏('卡塔尔(قطر‎,^r^n)

图片 2

 

效果:

图片 3

 

换行替换,ultraedit换行替换 需要:想在每行结尾增添 '卡塔尔(قطر‎, 方案:在查找栏填写( ^r^n 卡塔尔(英语:State of Qatar) 替换栏( '卡塔尔(قطر‎,^r^n ) 效果:...

乘胜技巧的迭代,以后对App的坚决守住须求越来越高,那么在这里篇小说里面大家黄金年代道研商一下如何在调控器做跳转的时候对导航栏做平滑过渡的转场

图片 4

构思:

  • 第风度翩翩要博得到导航栏里的子控件来设置其折射率(完成光滑度变化卡塔尔
  • 为富有调整器增添二个导航栏折射率属性,用于记录当前调节器的导航栏发光度(记录光滑度值卡塔尔(英语:State of Qatar)
  • 透过监听手势滑动来获取源和目标调节器,计算从源到目的调整器的光滑度变化,来退换导航栏的反射率(达成平滑过渡卡塔尔

图片 5

bardemo


 

1、达成折射率变化

要想完结发光度变化,得先获得到导航栏里的子控件,然后设置其阿尔法值。可是怎么获得呢? 首先考虑动用KVC,通过导航栏的'valueForKey:'方法来获取子控件对象,但是在不一致的系统上,导航栏里的子控件构造排布也是不同, 意味着key值实际不是牢固,通过key值拿子控件对象的措施在不一致的系统上就非常轻巧抛格外。

图片 6

左:iOS10 右:iOS9

设想到那一点,作者利用了最直白的法子:遍历导航栏的全体子控件,获得第三个子控件给其设置折射率。如此不光不要求再去思考系统的主题材料了,相同的时间也能知足带颜色的导航栏可能是带背景图的导航栏反射率的转移。

- (void)xa_changeNavBarAlpha:(CGFloat)navBarAlpha{
    NSMutableArray *barSubviews = [NSMutableArray array];
    //将导航栏的子控件添加到数组当中,取首个子控件设置透明度(防止导航栏上存在非导航栏自带的控件)
    for (UIView * view in self.navigationBar.subviews) {
        if(![view isMemberOfClass:[UIView class]]){
            [barSubviews addObject:view];
        }
    }
    UIView *barBackgroundView = [barSubviews firstObject];
    barBackgroundView.alpha   = navBarAlpha;
}

 

2、记录发光度

各种调节器都应有有和谐的导航栏光滑度且当折射率爆发变化后大家都应该把值保存下去,以有益后一次的运用,这里大家就给UIViewController增多贰个分类并加一个navBarAlpha的天性,那样大家就足以直接通过调整器去设置导航栏的发光度啦~

- (CGFloat)xa_navBarAlpha{
    return [objc_getAssociatedObject(self, _cmd)floatValue] ;
}

- (void)setXa_navBarAlpha:(CGFloat)xa_navBarAlpha{
    if(xa_navBarAlpha > 1){
        xa_navBarAlpha = 1;
    }
    if(xa_navBarAlpha < 0){
        xa_navBarAlpha = 0;
    }
    objc_setAssociatedObject(self, @selector(xa_navBarAlpha), @(xa_navBarAlpha), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
    [self.navigationController xa_changeNavBarAlpha:xa_navBarAlpha];
}

版权声明:本文由bob体育app发布于bob体育app,转载请注明出处:iOS:记三回导航栏平滑过渡的得以达成