一句話筆記(16)(NavigationBarHidden)

一句話筆記,某段時間內(nèi)遇到或看到的某個可記錄的點。 2016-12-27

  • NavigationBar 隱藏的兩個小細(xì)節(jié)
  • 超出父視圖的子視圖響應(yīng)事件
  • objc-class-ref in 的BUG

一、 NavigationBar 隱藏的兩個小細(xì)節(jié)

  • self.navigationController.navigationBar.hidden &self.navigationController.navigationBarHidden 區(qū)別
    // 對一個屬性隱藏
    self.navigationController.navigationBarHidden = YES;
    // 對一個對象隱藏 (下一層次的頁面 NavigationBar 直接不顯示)
    self.navigationController.navigationBar.hidden = YES;

一般建議還是用 .navigationBarHidden, 因為用 .navigationBar.hidden 會導(dǎo)致下一層次的NavigaitionBar 直接隱藏了,需要再重新設(shè)置,沒必要。

  • ** self.navigationController setNavigationBarHidden: & self.navigationController setNavigationBarHidden: animated: 的不同點**
    //  Set 方法
    [self.navigationController setNavigationBarHidden:YES];
    // 可以解決隱藏后,下一階滑動返回頭部消失的丑陋情況
    [self.navigationController setNavigationBarHidden:YES animated:YES];

有時我們在隱藏某個一個界面的導(dǎo)航欄,子界面 向右滑動 pop 回來時,會呈現(xiàn)上面缺失的丑的情況,用self.navigationController setNavigationBarHidden: animated:則直接解決了這個問題。

二、超出父視圖的子視圖響應(yīng)事件

有時我們設(shè)置視圖時,會將其子視圖移到在父視圖外面,但這樣外部的視圖就不能響應(yīng)點擊事件,為此需要處理一下。其思路是遍歷父視圖的所有子視圖,并判斷觸發(fā)事件的點是否在子視圖的bounds內(nèi)如果在就返回這個子視圖

// 此處的目的是讓超出父視圖的點擊同樣可以被響應(yīng)到
- (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

錯誤顯示

這個錯誤是我在切換模擬器時遇到的,平常第一反應(yīng)以為是:

  • 缺失了什么文件導(dǎo)致的
  • 或者什么文件重疊了導(dǎo)致的。

具體癥狀:在 6,6P, 7,7P 上是好好的,跑到4s,5 上的模擬器就直接出現(xiàn)了這種情況,甚至 5s 都是好的。

同時問了一下其他小伙伴,發(fā)現(xiàn)他們是正常的,其中一個小伙伴用了 Command+Shift +K 之后也是可以正常編譯的,我之前是用了很多遍的 Clear, 之后也試了很多遍Clear 還是沒用的...

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

所以出現(xiàn) objc-class-ref 的原因多了一個:緩存的影響,不單單是用 Command+Shift +K 而且要清理掉 DerivedData。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容