iOS TabBar의 기본 Shadow를 커스터마이징하려면 먼저 기본 shadow 스타일을 빈 이미지로 초기화한 다음 커스텀 스타일을 적용해야 한다.
그러므로 UITabBarController
를 상속하는 CustomTabBarController
를 만들고 viewDidLoad
에서 스타일을 설정하게 해줬다.
import UIKit
class CustomTabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
setupStyle()
}
func setupStyle() {
UITabBar.clearShadow()
tabBar.layer.applyShadow(color: .gray, alpha: 0.3, x: 0, y: 0, blur: 12)
}
}
다음으로 기본 그림자 스타일을 초기화하는 함수와 그림자를 적용하는 함수는 다른 파일에 아래와 같이 만들어뒀다.
import Foundation
import UIKit
extension CALayer {
// Sketch 스타일의 그림자를 생성하는 유틸리티 함수
func applyShadow(
color: UIColor = .black,
alpha: Float = 0.5,
x: CGFloat = 0,
y: CGFloat = 2,
blur: CGFloat = 4
) {
shadowColor = color.cgColor
shadowOpacity = alpha
shadowOffset = CGSize(width: x, height: y)
shadowRadius = blur / 2.0
}
}
extension UITabBar {
// 기본 그림자 스타일을 초기화해야 커스텀 스타일을 적용할 수 있다.
static func clearShadow() {
UITabBar.appearance().shadowImage = UIImage()
UITabBar.appearance().backgroundImage = UIImage()
UITabBar.appearance().backgroundColor = UIColor.white
}
}
끝!