【SwiftUI】NeumorphismButton 만들어 보았다

1667 단어 SwiftUI

환경



【Xcode】11.7
【Swift】5.2.4
【iOS】13.7
【macOS】Catalina 버전 10.15.7

만드는 법



기본 색상 만들기


extension Color {
    static let offWhite = Color(red: 245 / 255, green: 245 / 255, blue: 255 / 255)
}

앱 전체에서 사용하기 때문에 extension에서 정의해 둡니다.

ViewModifier로 설정


struct NeumorphismStyle: ViewModifier {
    var height: CGFloat
    var ratio: CGFloat

    func body(content: Content) -> some View {
        content
            .padding(10)
            .background(
                GeometryReader(){ geometry in
                    RoundedRectangle(cornerRadius: 30,
                                     style: .continuous)
                        .fill(Color.offWhite)
                        .shadow(color: Color.black.opacity(0.2), radius: 10, x: 10, y: 10)
                        .shadow(color: Color.white.opacity(0.5), radius: 10, x: -5, y: -5)
                        .frame(width:geometry.size.width * self.ratio,
                               height: self.height)
                }
            )
    }
}

높이 → 값으로 지정
폭 → 부모 요소의 폭에 대한 배율

범용적으로 사용하기 위해 설정한 View의 크기를 참조하여 너비를 결정합니다.

설정 방법


NavigationLink(destination: SecondView()) {
                    Text("NextView")
                        .modifier(NeumorphismStyle(height: 50, ratio: 1.5))
                }



참고 기사

좋은 웹페이지 즐겨찾기