一句话笔记(16)(NavigationBarHidden)

2016-12-27  本文已影响166人  天空中的球

一句话笔记,某段时间内遇到或看到的某个可记录的点。 2016-12-27

一、 NavigationBar 隐藏的两个小细节

    // 对一个属性隐藏
    self.navigationController.navigationBarHidden = YES;
    // 对一个对象隐藏 (下一层次的页面 NavigationBar 直接不显示)
    self.navigationController.navigationBar.hidden = YES;

一般建议还是用 .navigationBarHidden, 因为用 .navigationBar.hidden 会导致下一层次的NavigaitionBar 直接隐藏了,需要再重新设置,没必要。

    //  Set 方法
    [self.navigationController setNavigationBarHidden:YES];
    // 可以解决隐藏后,下一阶滑动返回头部消失的丑陋情况
    [self.navigationController setNavigationBarHidden:YES animated:YES];

有时我们在隐藏某个一个界面的导航栏,子界面 向右滑动 pop 回来时,会呈现上面缺失的丑的情况,用self.navigationController setNavigationBarHidden: animated:则直接解决了这个问题。

二、超出父视图的子视图响应事件

有时我们设置视图时,会将其子视图移到在父视图外面,但这样外部的视图就不能响应点击事件,为此需要处理一下。其思路是遍历父视图的所有子视图,并判断触发事件的点是否在子视图的bounds内如果在就返回这个子视图

// 此处的目的是让超出父视图的点击同样可以被响应到
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    UIView *view = [super hitTest:point withEvent:event];
    if (!view) {
        for (UIView *subView in self.subviews) {
            CGPoint subPoint = [subView convertPoint:point fromView:self];
            if (CGRectContainsPoint(subView.bounds, subPoint)) {
                view = subView;
            }
        }
    }
    return view;
}

三、objc-class-ref in 的BUG

错误显示

这个错误是我在切换模拟器时遇到的,平常第一反应以为是:

具体症状:在 6,6P, 7,7P 上是好好的,跑到4s,5 上的模拟器就直接出现了这种情况,甚至 5s 都是好的。

同时问了一下其他小伙伴,发现他们是正常的,其中一个小伙伴用了 Command+Shift +K 之后也是可以正常编译的,我之前是用了很多遍的 Clear, 之后也试了很多遍Clear 还是没用的...

然后换了一种清理方式,直接去清理掉 DerivedData ,然后就好啦...

所以出现 objc-class-ref 的原因多了一个:缓存的影响,不单单是用 Command+Shift +K 而且要清理掉 DerivedData。

上一篇 下一篇

猜你喜欢

热点阅读