애플로그인 커스텀 하기 !

Jehyeon Lee·2024년 6월 17일
0

사초생

목록 보기
2/3

애플로그인버튼을 커스텀 해봤습니다
방법은 zstack 으로 먼저 커스텀한 애플로그인뷰를 만들어놓고

Image("appleLogin")
                    .resizable()
                    .aspectRatio(contentMode: .fit)
                    .frame(width: SignSpace.screenWidth - 40, height: 55)

그 위에다가 진짜 애플로그인 버튼을 쌓습니다

ZStack {
                
                Image("appleLogin")
                    .resizable()
                    .aspectRatio(contentMode: .fit)
                    .frame(width: SignSpace.screenWidth - 40, height: 55)
                AppleSignInButton()
                    .frame(width: SignSpace.screenWidth - 40, height: 55)
            }

그리고 제일중요한 수정자를 넣어야하는데요

https://developer.apple.com/documentation/swiftui/view/blendmode(_:)

blendMode(_:)이 수정자를 사용해서 zstack안에 있는 뷰들을 혼합시킬겁니다.

.blendMode(.overlay)

그리고 기존 애플로그인의 투명도를 0.02로 두고 안보이도록 합니다

.opacity(0.02)

만약에 0.01로 두고 작업하시면 버튼이 안눌리실겁니다!! 이유는 몰루 ..?

이렇게만 하면 버튼이 안눌릴텐데요 ! 제일중요한 수정자를 넣으면 해결이 됩니다!
바로 뭐냐면

allowsHitTesting(_:) 이 수정자를 넣어야 해요 ~ !

이것이 무엇이냐

https://developer.apple.com/documentation/assignables/assignabledocumentview/allowshittesting(_:)/

allowsHitTesting(_:)는 SwiftUI에서 뷰가 터치 이벤트나 다른 형태의 사용자 인터랙션을 받을 수 있는지 여부를 제어하는 수정자입니다. 이 수정자는 뷰가 사용자 인터랙션을 받을 수 있도록 할지 또는 무시할지를 결정합니다. 기본값은 true이며, 이는 뷰가 터치 이벤트를 받을 수 있음을 의미합니다.

라고 하는데요.
즉 이는 버튼이 시각적으로는 여전히 투명하지만, SwiftUI에서는 여전히 터치 이벤트를 받을 수 있게 합니다. 그리고 allowsHitTesting(true)를 사용하여 투명한 뷰가 터치 이벤트를 받을 수 있게 했습니다.

ZStack {   
                Image("appleLogin")
                    .resizable()
                    .aspectRatio(contentMode: .fit)
                    .frame(width: SignSpace.screenWidth - 40, height: 55)
                AppleSignInButton()
                    .frame(width: SignSpace.screenWidth - 40, height: 55)
                    .blendMode(.overlay)
                    .opacity(0.02)
                    .allowsHitTesting(true)
            }
profile
공부한거 느낌대로 써내려갑니당

0개의 댓글

관련 채용 정보