Starbucks Caramel Frappuccino
본문 바로가기
  • 그래 그렇게 조금씩

SwiftUI107

13. GeometryReader / rotation3DEffect ⭐️GeometryReader / rotation3DEffect ⭐️ GeometryReader는 내부 뷰들의 크기와 위치에 대한 정보를 얻기 위해 사용하는 컨테이너뷰이다. 여러 상황에서 유용할 수 있지만 단점이 있기 때문에 최대한 사용을 지양하는 편도 좋다. GeometryReader는 뷰 계층 구조를 재계산하고 측정하기 때문에 많은 연산 능력을 요구한다.(컴퓨팅 파워) 즉 자식 뷰의 크기와 위치에따라 크기 조정을 수행하는데, 자식 뷰의 크기가 변경될 때마다 다시 계산된다는 말이다. 이러면 레이아웃 계산이 많아져서 성능 저하가 발생할 수 있다. 1. GeometryReader 사용을 최소화 하기.(꼭 필요한 경우만!), 그리고 중첩 사용 피하기 2. GeometryReder 내에서 복잡한 작업 수행 지.. 2023. 5. 25.
12. ScrollViewReader 스크롤뷰 리더 ⭐️ScrollViewReader 스크롤뷰 리더⭐️ 채팅 앱들을 보면 가장 위로, 가장 아래로 스르륵 자동으로 스크롤 되는 기능이 있는 경우가 많다. 이런 기능은 ScrollViewReader를 통해서 구현할 수 있다. 스크롤뷰리더는 코드를 통해 스크롤을 할 수 있게 하는 뷰이다. 스크롤뷰프록시는 스크롤 가능한 뷰에서 코드를 통해 스크롤을 할 때 필요한 간접/대리값 정도로 이해할 수 있다. 수동으로 스크롤 하는 것이 아니라, 원하는 위치로 자동으로 스크롤 해서 이동하는 것을 구현해 보자. // Created by Toughie on 2023/05/25. // import SwiftUI struct ScrollViewReaderPrac: View { @State var textFieldText: Strin.. 2023. 5. 25.
11. DragGestrue() 드래그 제스쳐 ⭐️DragGestrue() 드래그 제스쳐⭐️ 손가락으로 드래그했을 때 다양한 효과를 주는 법을 알아보자. 상하좌우 이동도 가능하고, 이에 맞춰 크기 변화도 줄 수 있고 여러 애니메이션 효과를 가미할 수 있다. 1. 좌우 이동 스케일 효과 // Created by Toughie on 2023/05/25. // import SwiftUI struct DragGesturePrac: View { //초기 오프셋 0에서 시작 @State var offset: CGSize = .zero var body: some View { ZStack { VStack { Text("\(offset.width)") Spacer() } RoundedRectangle(cornerRadius: 20) .fill(Color.blue.o.. 2023. 5. 25.
10. LongPressGesture 길게 누르기 ⭐️LongPressGesture 길게 누르기⭐️ tapGesture의 경우 탭 하는 순간 바로 어떤 액션이 실행되는데, 일정 시간 이상 누르고 있어야 액션이 실행되도록 해야 하는 경우에 LongPressGesture를 활용할 수 있다. 대부분의 앱에서는 크게 사용할 일이 없을 거 같지만..게임이나 특수한 상황에서 사용할 수도 있겠다는 생각. LongPressGesture는 크게 3가지 정도를 고려할 수 있겠다. 1. 얼마나 눌러야 하는가? 2. 누르고 있는가? 3. 다 눌렀는가? // Created by Toughie on 2023/05/25. // import SwiftUI struct LongPressGesture: View { //누르고 있는지 판단하기 위한 프로퍼티 @State var isPre.. 2023. 5. 25.
9. RotationGesture/effect 회전 애니메이션 ⭐️RotationGesture/effect 회전 애니메이션⭐️ 보이는 그대로.. 두 손가락을 이용해 돌릴 수 있는 애니메이션을 구현해보자. // Created by Toughie on 2023/05/25. // import SwiftUI struct RotationGestruePrac: View { //초기 각도 0 @State var angle: Angle = Angle(degrees: 0) var body: some View { Text("Toughie") .font(.largeTitle) .fontWeight(.semibold) .foregroundColor(.white) .padding(50) .background(Color.blue.cornerRadius(10)) //회전 이펙트 .rotati.. 2023. 5. 25.
8. MagnificationGesture (확대/축소) ⭐️MagnificationGesture (확대/축소)⭐️ 인스타그램에서 피드의 사진을 손가락을 통해 핀치 인/아웃을 하면 사진이 확대/축소 되는 기능이 있다. 이것을 MagnificationGesture와 ScaleEffect를 통해 구현해보자. + 좋아요 버튼까지 간단하게 // Created by Toughie on 2023/05/24. // import SwiftUI struct MagnificationGesturePrac: View { @State var currentAmount: CGFloat = 0 @State var heartTapped = false var body: some View { VStack(spacing: 10) { HStack { Circle().frame(width: 25, .. 2023. 5. 25.