project/Kuring(공지알림)

[iOS] SearchBar (+ RxSwift)를 활용한 커스터마이징

lgvv 2021. 12. 19. 17:05

[iOS] SearchBar (+ RxSwift)를 활용한 커스터마이징

 

서치바!

 

위에 보이는 그림대로 서치바를 커스텀해보자

그런데...! 이전에 Customizing을 해본 기억이 있었는데, 코드로만 작성하려니 또 다른느낌.. 기본적으로 then을 사용함.

 

👉 UISearchBar는 안에 UITextField를 갖고 있다. (계층 구조) 

   var searchBar = UISearchBar().then {
        $0.placeholder = "검색어를 입력해주세요."
        $0.searchBarStyle = .minimal
        $0.searchTextField.layer.borderColor = UIColor.green.cgColor 
        $0.searchTextField.layer.cornerRadius = 20
        $0.searchTextField.layer.borderWidth = 1
        $0.searchTextField.largeContentImage?.withTintColor(.green) // 왼쪽 돋보기 모양 커스텀
        $0.searchTextField.borderStyle = .none // 기본으로 있는 회색배경 없애줌
        $0.searchTextField.leftView?.tintColor = .green
    }

 

 


✅ 그렇다면 RxSwift를 활용하여 키보드의 done(혹은 상황에 따라 return 등) 이벤트는 어떻게 처리할까?

구글에 검색하기 전까지 꽤나 많은 시간을 할애 했는데, 우선 올바른 답부터 함께 보자면

    searchBar.searchTextField.rx.controlEvent(.editingDidEndOnExit)
            .bind{ [weak self] in
                print("done")
            }.disposed(by: bag)

이렇게 사용할 수 있습니다:)

텍스트 필드에 controlEvent를 적용해주면 된다..!