經(jīng)常我們會(huì)碰到這種需求,就是返回首頁(yè)選中某一個(gè)tabbaritem,在自定義tabbar的時(shí)候,遇到這個(gè)奇葩的問(wèn)題,返回首頁(yè)選中第一個(gè)的時(shí)候,self.view整體被上移動(dòng)了49pt,而且這49pt還是黑色的,通過(guò)小面包看層級(jí)發(fā)現(xiàn)這個(gè)view的類(lèi)名叫做UITransitionView,這里采用的本辦法就是講這個(gè)view的背景色設(shè)置成當(dāng)前顯示控制器的背景色,然后強(qiáng)制讓self.view調(diào)用layoutsubviews再讓它布局一遍,代碼如下:
SendNotify(@"backToHome", nil);
[self.navigationController popToRootViewControllerAnimated:YES];
- (void)setSelectedIndex:(NSInteger)index {
DTTabBarController *tabBarController = (DTTabBarController *)kAppWindow.rootViewController;
if (tabBarController) {
tabBarController.selectedIndex = index;
}
}
@objc func backHome() {
for subView in self.view.subviews {
if subView.className().contains("UITransitionView", compareOption: NSString.CompareOptions.caseInsensitive) {
subView.backgroundColor = UIColor.kColor243
view.layoutSubviews();
continue
}
}
}
// MARK: - memory management
deinit {
NotificationCenter.default.removeObserver(self)
}