티스토리 뷰

.background(
    Color.white
        .shadow(color: .gray.opacity(0.2), radius: 10, x: 0, y: 0)
        .mask(Rectangle().padding(.top, -20))
)Button의 그림자는 이렇게 단순하게 background와 shadow를 이용하면 됐다. 하지만 TabView는 이렇게 해도 동작하지 않는다.
해결 방법
import Foundation
import UIKit
import SwiftUI
extension UITabBarController {
    open override func viewWillLayoutSubviews() {
        super.viewWillLayoutSubviews()
        tabBar.layer.masksToBounds = true
//        tabBar.layer.cornerRadius = 16
        // Choose with corners should be rounded
        tabBar.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner] // top left, top right
        // Uses `accessibilityIdentifier` in order to retrieve shadow view if already added
        if let shadowView = view.subviews.first(where: { $0.accessibilityIdentifier == "TabBarShadow" }) {
            shadowView.frame = tabBar.frame
        } else {
            let shadowView = UIView(frame: .zero)
            shadowView.frame = tabBar.frame
            shadowView.accessibilityIdentifier = "TabBarShadow"
            shadowView.backgroundColor = UIColor.white
            shadowView.layer.cornerRadius = tabBar.layer.cornerRadius
            shadowView.layer.maskedCorners = tabBar.layer.maskedCorners
            shadowView.layer.masksToBounds = false
            shadowView.layer.shadowColor = Color.gray.opacity(0.1).cgColor
            shadowView.layer.shadowOffset = CGSize(width: 0.0, height: -2.0)
            shadowView.layer.shadowOpacity = 0.1
            shadowView.layer.shadowRadius = 10
            view.addSubview(shadowView)
            view.bringSubviewToFront(tabBar)
        }
    }
}이렇게 UITabBarController의 Extension을 구현해주면 된다.
참고 링크
https://medium.com/@cleberwdsantos/swiftui-tip-tab-bar-with-rounded-corners-and-shadow-1c520dda31a
'iOS > SwiftUI' 카테고리의 다른 글
| [SwiftUI] NavigationLink와 Button 기능 같이 구현하기 (0) | 2024.10.04 | 
|---|---|
| [SwiftUI] 기본 폰트 크기 (0) | 2024.10.04 | 
| [SwiftUI] 스플래시 스크린 띄우기 (0) | 2024.03.19 | 
| [SwiftUI] 배너와 자동스크롤 구현하기 (0) | 2024.03.06 | 
| [SwiftUI] .sheet 사용시 현재 뷰가 사라지는 문제 해결하기 (0) | 2024.03.05 | 
