[SwiftUI] 애플스토어 앱 클론코딩(스크롤)

2023. 7. 8. 21:53·Swift/개발
728x90

애플스토어 스크롤

 

좌측(개발화면), 우측(실제화면)

피그마로 받은 UI 디자인

개발 부분

  • Scroll 길이 계산 (애플스토어 앱 참고)
    • UIScreen.main.bounds.height 사용 (GeometryReader도 가능)
  • PreferenceKey 프로토콜 사용
    • 기능 : SwiftUI의 레이아웃 시스템에서 뷰의 크기, 위치 또는 다른 사용자 정의 정보와 같은 데이터를 수집하고 공유하기 위해 사용
  • 디바이스의 높이를 측정
  • enum, switch 사용하여 색상마다 View를 다르게 그려줌

Scroll Animation

.onPreferenceChange(OffsetPreferenceKey.self) { value in
                currentHeight = value
                print("currentHeight: \\(value)")
                
                // 현재 디바이스 기기의 높이를 측정하여 내가 원하는 지점에서 Bool값을 바꿔줌
                if -(currentHeight - UIScreen.main.bounds.height) < (wholeViewHeight - purchaseHeight - footerHeight){
                    withAnimation(.spring(response:0.5,dampingFraction:0.5,blendDuration: 0.5)){
                        isButtonActive = true
                    }
                } else {
                    withAnimation(.spring(response:0.5,dampingFraction:0.5,blendDuration: 0.5)){
                        isButtonActive = false
                    }
                }
                print (-(currentHeight - UIScreen.main.bounds.height))
                print (wholeViewHeight - productHeight)
            }
// 레이아웃 시스템의 뷰의 위치 데이터를 수집

struct OffsetPreferenceKey: PreferenceKey {
    // 화면위치의 초기값
    static var defaultValue: CGFloat = 0
    
    //inout 매개변수를 통해 값을 변경해야함, nextValue를 호출하여 새로운값을 가져와서 업데이트
    static func reduce(value: inout CGFloat, nextValue: () -> CGFloat) {
        value = nextValue()
    }
}
728x90

'Swift > 개발' 카테고리의 다른 글

[SwiftUI] View가 멈추는 현상  (0) 2023.10.25
[SwiftUI] 프로그램 차단 기능  (0) 2023.10.06
[SwiftUI] 알람 앱 클론코딩  (0) 2023.07.07
[SwiftUI] 애플스토어 앱 클론코딩  (1) 2023.05.30
[SwiftUI] 출쓱 앱 클론코딩  (0) 2023.05.21
'Swift/개발' 카테고리의 다른 글
  • [SwiftUI] View가 멈추는 현상
  • [SwiftUI] 프로그램 차단 기능
  • [SwiftUI] 알람 앱 클론코딩
  • [SwiftUI] 애플스토어 앱 클론코딩
bulmang
bulmang
모바일 개발자 도전
  • bulmang
    bulmang
    bulmang
  • 전체
    오늘
    어제
    • 분류 전체보기 (208)
      • 알고리즘 (68)
        • List (3)
        • Two Pointer (6)
        • Binary Search (4)
        • Prefix Sum (3)
        • Sort (4)
        • Brute Force (5)
        • Array (2)
        • String (4)
        • 프로그래머스 (12)
        • 백준 (9)
        • Queue (2)
        • Stack (2)
        • Recursion (12)
      • Computer Science (16)
        • Computer Architecture (6)
        • Operating System (5)
        • Network (2)
        • 기타 (2)
        • System Programming (1)
      • Swift (70)
        • 개발 (24)
        • 정리 (25)
        • 문법 (20)
      • Flutter (24)
      • 기타 (12)
        • 후기 (12)
      • Git (6)
      • Ios 오픈소스 (5)
      • UI 디자인 (5)
      • AppleScript (2)
  • 링크

    • Notion
    • Github
  • 태그

    Apple Developer Academy
    riverpod
    Xcode
    문법
    FLUTTER
    알고리즘
    SwiftUI
    자료구조
    피플
    Swift
    코딩테스트
    today i learned
    IOS
    협업
    개발
    컴퓨터구조
    til
    백준
    Java
    재귀
  • 최근 댓글

  • 최근 글

  • 인기 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.2
bulmang
[SwiftUI] 애플스토어 앱 클론코딩(스크롤)
상단으로

티스토리툴바