LTNavigationBar icon indicating copy to clipboard operation
LTNavigationBar copied to clipboard

iOS11 无法获取_titleView

Open ghost opened this issue 7 years ago • 7 comments

  • (void)lt_setTitleAlpha:(CGFloat)alpha {

    if (@available(iOS 11.0, *)) {

    } else {

      UIView *titleView = [self valueForKey:@"_titleView"];
      titleView.alpha = alpha;
    

    } }

ghost avatar Sep 04 '17 01:09 ghost

同样 [self valueForKey:@"_leftViews"] 会crash

MrWilsonXu avatar Sep 21 '17 06:09 MrWilsonXu

想问一下这个问题你们解决了吗?

KinmoCode avatar Sep 23 '17 10:09 KinmoCode

解决的话可以贴一下解决方式么

KinmoCode avatar Sep 23 '17 10:09 KinmoCode

[self valueForKey:@"_leftViews"] 会crash的我的解决办法 会crash的原因是,iOS11 UINavigationBar 没有_leftViews,_rightViews,_titleView这些key 解决办法:通过代码找到leftButton 、rightButton和titleView,然后改变他们的透明度 tip:我们项目中没有用到titleView,所以我找到了leftButton和rightButton,至于titleView在哪,需要自己慢慢去发现 //如果是iOS 11 if (@available(iOS 11, *)) { [[self subviews] enumerateObjectsUsingBlock:^(UIView *obj, NSUInteger idx, BOOL *stop) {

        if ([obj isKindOfClass:NSClassFromString(@"_UINavigationBarContentView")]) {
            
            for (UIView *view in [obj subviews])
            {
                view.alpha = alpha;
            }
        }
    }];
}
else
{
    [[self valueForKey:@"_leftViews"] enumerateObjectsUsingBlock:^(UIView *view, NSUInteger i, BOOL *stop) {
        view.alpha = alpha;
    }];
    
    [[self valueForKey:@"_rightViews"] enumerateObjectsUsingBlock:^(UIView *view, NSUInteger i, BOOL *stop) {
        view.alpha = alpha;
    }];
    
    UIView *titleView = [self valueForKey:@"_titleView"];
    titleView.alpha = alpha;
}

xq931014 avatar Sep 27 '17 02:09 xq931014

@xq931014 你好,不知道这个问题,你最后找到titleView了吗,还是说你从其他途径解决此问题了,如有方法,谢谢解惑.

ChaoYeee avatar Oct 13 '17 08:10 ChaoYeee

emmm,因为这个第三方很久没维护了,所以我用了另外一个:https://github.com/wangrui460/WRNavigationBar,不过个人使用后感觉侵入性还是有点强,你可以参考一下

KinmoCode avatar Oct 15 '17 03:10 KinmoCode

@loveJuly 好的,谢谢推荐.

ChaoYeee avatar Oct 16 '17 01:10 ChaoYeee