UISearchBar, UINavigationBar 및 UIToolBar의 테두리 그림자를 제거하는 데 문제가 있습니다. 그래서 기본적으로 UISearchController를 내장 한 뷰 컨트롤러가 있으며 그 아래에는 UISegmentedControl이있는 UIToolbar가 있습니다. 문제는 appearance () 대리자를 사용하여 UINavigationBar, UISearchBar, UIToolbar에 대한 경계 그림자를 개별적으로 제거한 후에도 UISearchBar와 UIToolBar 사이에 경계가 여전히 표시된다는 것입니다.
다음 화면으로 가면 UINavigationBar에 테두리 그림자가 없다는 것을 알 수 있으므로 표시되는 테두리가 UINavigationBar가 아닌지 확인하십시오.
또한 이상한 것을 발견했습니다. UINavigationBar에서 UISearchController를 숨기면 UINavigationBar와 UIToolBar 사이에 경계가 없습니다. UIToolBar를 숨기면 UINavigationBar 뒤에 테두리가 없습니다.
extension AppDelegate {
private func appearanceSetup() {
UINavigationBar.appearance().barTintColor = .appBlueColor
UINavigationBar.appearance().shadowImage = UIImage()
UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.white]
UITextField.appearance().tintColor = .appBlueColor
UISearchBar.appearance().setBackgroundImage(UIImage(), for: .any, barMetrics: .default)
UISearchBar.appearance().barTintColor = .appBlueColor
UISearchBar.appearance().backgroundImage = UIImage()
UIToolbar.appearance().setShadowImage(UIImage(), forToolbarPosition: .any)
UIToolbar.appearance().barTintColor = .appBlueColor
UIToolbar.appearance().layer.borderWidth = 1
UIToolbar.appearance().layer.borderColor = UIColor.appBlueColor.cgColor
}
}
class HomeViewController: UIViewController {
private let searchController: UISearchController = {
let searchController = UISearchController(searchResultsController: nil)
searchController.obscuresBackgroundDuringPresentation = false
searchController.searchBar.placeholder = "Search"
searchController.searchBar.tintColor = .white
searchController.searchBar.barTintColor = .appBlueColor
return searchController
}()
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.searchController = searchController
}
- 답변 # 1
- 답변 # 2
appeareance
에서 비슷한 문제가 발생하면 내 문제를 해결하지 못했습니다. 그래서 구성 요소 사용자 정의를 진행했습니다. 나는UINavigationBar
를 위해 이것을했다 내UINavigationBar
에도 불구하고 효과가있었습니다. 코드가 아닌 스토리 보드에 넣었지만 어쨌든 대부분 작동합니다. 시도하고 알려주세요 :class CustomNavigationBar: UINavigationBar { override init(frame: CGRect) { super.init(frame: frame) setBackgroundImage(UIImage(), for: .default) shadowImage = UIImage() backgroundColor = <Your UIView.backgoundColor of type: UIColor> tintColor = UIColor.white } required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) setBackgroundImage(UIImage(), for: .default) shadowImage = UIImage() backgroundColor = <Your UIView.backgoundColor of type: UIColor> tintColor = UIColor.white } }
UISearchController
에 대한 당신의 접근 방식이 무엇인지 모르겠습니다 하지만 searchBar에서도 같은 문제가 있었으므로 searchBar를 코드에 추가하고 대리자를 사용합니다. iOS 버전이 iOS 10 또는 iOS 10+ 미만에서는 제대로 작동하지 않기 때문에 자리 표시자가 두 번 나타납니다. 어느 것을 제거할지에 따라 다릅니다override func viewDidLoad() { super.viewDidLoad() setup() installRefresh() } private func setup() { let searchBar = UISearchBar() searchBar.scopeButtonTitles = [placeholdetText] // The String for the place holder searchBar.searchBarStyle = .default searchBar.barTintColor = view.backgroundColor searchBar.placeholder = placeholdetText + ".." searchBar.setBackgroundImage(UIImage(), for: .any, barMetrics: .default) searchBar.backgroundColor = UIColor.clear searchBar.delegate = self // Extra UI Setup } func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) { if searchText.isEmpty { // The filters objects it's what i show after the search, and the // general objects it's all the objects filtersObjects = generalObjects } else { //... Al the code tu filter from the searchText } // Refresh the UI }
- 답변 # 3
override func viewDidLoad() { super.viewDidLoad() //MARK:- for default navigation bar self.navigationItem.backBarButtonItem = UIBarButtonItem(title: " ", style: .plain, target: nil, action: nil) self.navigationItem.backBarButtonItem?.tintColor = UIColor.white self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for:.default) self.navigationController?.navigationBar.shadowImage = UIImage() self.navigationController?.navigationBar.layoutIfNeeded() }
관련 자료
- reactjs - 반응 탐색 파란색 선 제거
- javascript - Owl carousel 탐색 버튼 (다음 및 이전 주변)에 "테두리"를 추가하려면 어떻게해야합니까?
- android - BottomNavigationView 주변의 테두리를 제거하는 방법
- java - Eclipse를 사용하여 JButton에서 아이콘 테두리를 제거하는 방법은 무엇입니까?
- swift - 스타일이 지정된 링크 레이블을 클릭 할 때 테두리 윤곽선을 제거하는 방법은 무엇입니까?
- mobile - 반응 기본 화면에서 탐색 헤더를 제거하십시오스택 탐색
- c# - DataGrid의 머리글 테두리 제거
- html : TR에 의해 설정된 행에서 마지막 테두리를 제거하는 방법은 무엇입니까?
- ionic2 - 이온 3의 이온 항목에서 검은 색 기준선 경계선 제거
- html - img 태그에서 테두리를 어떻게 제거합니까?
- html - 탐색 막대 테두리를 오른쪽으로 너무 멀리 확장하는 방법은 무엇입니까?
- css3 - 상단 버튼과 하단 패널이 닿은 공간에서 테두리를 제거하여 병합 된 것처럼 보이게하는 방법은 무엇입니까?
- alignment - 플러터에서 텍스트 또는 목록 타일과 상자 장식 테두리 사이의 공간을 제거하는 방법은 무엇입니까?
- jquery - Kendo UI 드롭 다운에서 테두리 글로우를 제거하고 부트 스트랩 스킨을 유지하는 다중 선택?
- ios : MVVM을 사용하여 JSON을 모델로 디코딩
- ios : Swift로 외부 USB 저장소에 데이터 쓰기
- ios : SwiftUI(WatchKit)에서 원형 버튼 배경 제거
- ios : spriteKit을 사용하여 신속하게 원을 그리는 방법은 무엇입니까?
- ios : Gesturer Recognizer 이전에 UIResponder를 어떻게 넣을 수 있습니까?
- ios : 건강 키트 -내 건강 데이터와 함께 공유 건강 데이터 가져오기
- Xcode(iOS 앱)는 개인 저장소에서 호스팅되는 swift 패키지를 어떻게 사용할 수 있습니까?
- ios : ViewDidLoad를 호출하는 ViewController 간에 분리하는 방법
- ios : View Model을 전달하여 ViewController 초기화하기
- ios : Apple Pass 카드에 버튼을 추가하는 방법
이 코드를 사용해 보시면 문제가 해결되기를 바랍니다