티스토리 뷰

728x90
반응형
let appearance = UITabBarAppearance()
// set tabbar opacity
appearance.configureWithOpaqueBackground()

// remove tabbar border line
appearance.shadowColor = UIColor.clear

// set tabbar background color
appearance.backgroundColor = .white

tabBar.standardAppearance = appearance

if #available(iOS 15.0, *) {
        // set tabbar opacity
        tabBar.scrollEdgeAppearance = tabBar.standardAppearance
}

// set tabbar tintColor
tabBar.tintColor = .black

// set tabbar shadow
tabBar.layer.masksToBounds = false
tabBar.layer.shadowColor = UIColor.black.cgColor
tabBar.layer.shadowOpacity = 0.3
tabBar.layer.shadowOffset = CGSize(width: 0, height: 0)
tabBar.layer.shadowRadius = 6

위의 코드로 iOS 13.0 에서도 대응이 된다. iOS 15.0 에서는 위의 scrollEdgeAppearance 코드를 추가해줘야하는데 scrollEdgeAppearance 가 무엇인지 알아보자!

📌 scrollEdgeAppearance

스크롤 가능한 엣지가 탭바의 엣지와 정렬될 때 표시줄의 모양 설정.

Discussion

탭바 컨트롤러가 탭바와 스크롤 뷰를 가지고 있을 때 스크롤 뷰의 컨텐츠의 일부가 탭바의 아래에 나타납니다. 스크롤된 컨텐츠의 엣지가 탭바에 닿으면 UIKit 은 이 프로퍼티의 appearance 세팅을 적용합니다.


if #available(iOS 15.0, *) {
        // set tabbar opacity
        tabBar.scrollEdgeAppearance = tabBar.standardAppearance
}

즉, 위의 코드의 의미는 스크롤이 되어 탭바에 닿을 때 탭바의 scrollEdgeAppearancestandardAppearance 로 세팅하는 것입니다! 설정하지 않으면 아래와 같이 탭바와 닿을 때 변한답니다!

iOS 13.0 에서도 적용되는지 실행해보자

먼저 프로젝트의 Deployment info 에서 최소버전을 설정할 수 있다! 여기서 13.0 을 설정하게 되면 아래처럼 시뮬레이터의 iOS 버전을 설정해서 사용할 수 있다.

스크린샷 2021-11-28 오전 12 40 30

그리고 iOS 13.0 으로 설정하게 되면 tabBar.scrollEdgeAppearance = tabBar.standardAppearance 와 같이 그 이후 버전에서 등장해서 사용할 수 없는 코드들이 에러로 잡히게 된다. 그러면 위에처럼 분기처리를 해주면 된다.

728x90
반응형

'iOS' 카테고리의 다른 글

iOS) UITextField 글자 수 제한 구현하기  (2) 2021.12.08
iOS) UIPickerView 에 고정 라벨 추가하기  (0) 2021.12.01
Swift) 삼항연산자  (4) 2021.11.24
iOS) PHPicker iOS 14+  (0) 2021.11.15
iOS) Protocol 생성 시 AnyObject 상속받기  (5) 2021.11.11
댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
«   2024/06   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
링크
Total
Today
Yesterday