[iOS] TabBar shadow 커스터마이징

gompro·2019년 4월 14일
1
post-thumbnail

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
	}
}

끝!

profile
다양한 것들을 시도합니다

0개의 댓글