2016-09-30 6 views
1

색조는 흰색입니다. 우리의 응용 프로그램은 CNContactViewController를 사용합니다. iOS 8 및 9를 타겟팅하는 Xcode 7로 구축 된 스토어의 앱 버전에서 iOS 9 인 경우 CNContactViewController를 호출했습니다. 뒤로 버튼은 흰색이지만 뒤에는 회색 탐색 바가 있습니다. iOS 9 및 10을 타겟팅하는 Xcode 8을 사용하여 개발 한 빌드에서는 회색 막대가 없으므로 뒤로 버튼이 흰색 위에 흰색이고 그림자가 보이지 않습니다.CNContactViewController 버전 간 다른 탐색 모음

CNContactViewController의 탐색 영역이 변경된 Xcode 버전/SDK 버전간에 변경된 경험이있는 사람이 있습니까? 이 바에 영향을 미칠만한 다른 변화가있을 수 있습니까?

편집 : 다음은 최신 빌드의 이미지입니다. 일부 개인 정보는 삭제했기 때문에 중간에 상자가 있지만 맨 위 왼쪽에있는 뒤로 버튼을 볼 수 있습니다.

enter image description here

편집 : 이것은 우리가 응용 프로그램을 통해 색상을 설정하는 방법입니다. 그것은 또한 아무것도 대신 레드의 바 색조 색상을 사용하면 흰색 다시 버튼이 문제가되지 않을 것

UINavigationBar.appearance().barTintColor = UIColor.red 
    UINavigationBar.appearance().tintColor = UIColor.white 
    UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white] 

우리가 빨간색 막대와 흰색 버튼이 기존의 네비게이션 컨트롤러에이 밀어하는 데 사용하는 코드 :

let ucvc = CNContactViewController(forUnknownContact: contact) 
ucvc.delegate = self 
ucvc.allowsEditing = true 
ucvc.allowsActions = true 
ucvc.alternateName = name() 
ucvc.contactStore = CNContactStore() 
self.navigationController?.pushViewController(ucvc, animated: true) 
+0

당신이 스크린 샷을 제공 할 수 있을까요? – Sealos

답변

0

귀하의 질문은 내 문제를 해결했습니다. 이제 나는 왜 같은 문제가 있는지 알고 있습니다.

CNContactViewController를 푸시하기 전에 navigationController.navigationBar.tintColor를 파란색 음영으로 설정하여 해결했습니다. 대리자 메서드에서 끝낼 때 다시 흰색으로 설정하십시오.

+0

나는 그것을 시도했지만 그것은 나에게 차이를 만드는 것 같지 않았다. UINavigationBar.appearance()도 사용하고 있습니까? 샘플 코드를 제공해 주시겠습니까? 분명해야하지만, 제대로 작동하지는 않습니다. –

3

나는 똑같은 문제가있었습니다. 확실히 iOS 10 버그처럼 보입니다. 어쨌든 탐색 모음의 반투명을 false로 설정하여 해결 방법을 찾았습니다. 그런 다음 응용 프로그램의 기본 창의 배경색을 탐색 막대를 원하는 색상으로 설정하십시오.

일부 코드 조각은 :

UINavigationBar.appearance().isTranslucent = false 
UIApplication.shared.delegate?.window??.backgroundColor = UIColor.red 
+0

이 이상한 backgroundColor가 작동하지만 확실히 깨끗하지 못합니다 :) 희망하는 Apple이이 UINavigationBar 모양 버그를 수정합니다! – zarghol

1

나는 이런 식으로 해결했습니다

CNContactViewController *vc = [CNContactViewController viewControllerForContact:contact]; 
vc.delegate = self; 

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
    for (UIView *view in [vc.navigationController.navigationBar subviews]) { 
     view.tintColor = [UIColor darkTextColor]; 

     view.backgroundColor = [UIColor redColor]; 
    } 
}); 

[self.navigationController pushViewController:vc animated:YES];