본문 바로가기
개발

UISearchBar의 요상한 버그(feat ScopeBar)

by 꼬마상어 2018. 11. 13.
반응형

오늘 개발하다가 요상한 일을 겪었다.

거의 개발 마무리 단계여서 단말기별로 쭉 테스트를 진행중이었는데,

개발하고있는 앱의 Deployment Target을 8.0에서 9.0으로 올리면서 제일 작은 해상도를 가진 4s를 보다가 발견한 이슈이다.


보면 UITextField가 아닌 UISearchBar를 사용중에 있는데, 7+, 7에는 나오지 않는 파란색 무언가가 생겼다...

보니까 검색할때 세그먼트로 만들어진 ScopeBar라는게 있는데 이게 hidden으로 설정해 놓으면 검색쪽 뒤쪽으로 배치가되서 비쳐 보이는듯 했다.

 

그래서 숨기는 코드를 작성해보았다.

searchBar.showsScopeBar = false
searchBar.scopeButtonTitles = nil

 

근데도 똑같았다..

 

그래서 밑에 백그라운드를 투명색으로 깔아줘보았다.

백그라운드 색상을 지정할 수는 없고, 이미지로 적용해야되는 부분이라.. 색상을 지정하면 이미지를 만들어주는 extension을 추가하였다!

// 색상으로 이미지 만들기
extension UIImage {
    func imageWithColor(color: UIColor) -> UIImage {
		let rect = CGRect(x: 0, y: 0, width: 1, height: 1)
		UIGraphicsBeginImageContextWithOptions(CGSize(width: 1, height: 1), false, 0)
		color.setFill()
		UIRectFill(rect)
		let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
		UIGraphicsEndImageContext()
		return image
	}
}	

...

searchBar.scopeBarBackgroundImage = UIImage.imageWithColor(color: UIColor.clear)

 

반응형

댓글