inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[Lv.1] iOS 17 앱 개발 기초 - SwiftUI로 시작하기

LazyGrid

iOS 15 버전이후 프리뷰 문제 관련해서 질문드립니다.

해결된 질문

343

열쓰

작성한 질문수 7

0

안녕하세요 Jacob 강사님.

좋은 강의 잘 듣고 있습니다.

 

현재 다른 질문에 답변해주신 글을 확인해서 iOS 15버전 업데이트 후 프리뷰 문제로 뷰를 추가하면 새로운 프리뷰가 생기지 않아서 새로운 클래스나 구조체를 만들고 프리뷰를 추가해줘야 한다고 들었는데요.

그게 특정 강의에서만 해당되는게 아닌 지금 현재 강의들에서 프리뷰가 안생기는 문제들은 알려주신 방법대로 모두 진행하면 될까요? 현재 'LazyGrid' 강의 듣고 있고 Frame 강의때 프리뷰 문제를 발견해서 그 이후에 쭉 프리뷰가 나눠지는 부분은 알려주신 대로 처리했었습니다. 올바르게 하고 있는게 맞는지 궁금해서 질문드립니다.

 

감사합니다.

ios swift swiftui

답변 2

0

Jacob(제이콥)

안녕하세요 열쓰님.

먼저 프리뷰 문제에 대해서 질문주셔서 감사합니다. xcode15 이후 프리뷰 문제를 여러 강의에서 발견하였습니다.

제가 전 강의 체크해서 #Preview{} 메크로 형태로 바꾸어서 강의 자료를 다시 업로드 하였습니다.

질문 주신 강의 LazyGrid 변경된 부분은 강의 자료 예제코드 를 참조해주시고, 공지사항으로 #Preview 가 문제된 강의 목록 안내하도록 하겠습니다.

추후, 강의 전반적으로 영상 업데이트 하여 수정하도록 하겠습니다.

감사합니다.

Jacob


//
//  LazyGridBasic.swift
//  SwiftUIBasic
//


import SwiftUI

struct LazyGridBasic1: View {
	// LazyVGrid
	// columns 의 갯수를 3개로 설정
	let columns: [GridItem] = [
		GridItem(.flexible(), spacing: 6, alignment: nil),
		GridItem(.flexible(), spacing: 6, alignment: nil),
		GridItem(.flexible(), spacing: 6, alignment: nil),
	]
	
    var body: some View {
        
		// 1 - LazyVGrid
		ScrollView {
			
			// Hero 부분 (위에 사진 부분)
			Rectangle()
				.fill(Color.orange)
				.frame(height: 400)
			
			LazyVGrid(
				columns: columns,
				alignment: .center,
				spacing: 6,
				pinnedViews: [.sectionHeaders]) {
					// Section 1
					Section(header: Text("Section1")
						.foregroundColor(.white)
						.font(.title)
						.frame(maxWidth: .infinity, alignment: .leading)
						.background(Color.blue)
						.padding()
					) {
						ForEach(0..<20) { index in
							Rectangle()
								.fill(Color.gray)
								.frame(height: 150)
								.overlay(
									Text("\(index) 번")
								)
						}
					} //: Section 1
					
					// Section 2
					Section(header: Text("Section2")
						.foregroundColor(.white)
						.font(.title)
						.frame(maxWidth: .infinity, alignment: .leading)
						.background(Color.red)
						.padding()
					) {
						ForEach(0..<20) { index in
							Rectangle()
								.fill(Color.green)
								.frame(height: 150)
								.overlay(
									Text("\(index) 번")
								)
						}
					} //: Section 2
				}
		} // :1번
		

    }
}

struct LazyGridBasic2: View {
    
    // LazyHGrid
    // title 을 1000 개 변수를 생성
    // ["목록 1", "목록 2", .... "목록 1000"] [Sting]
    let title: [String] = Array(1...1000).map {"목록 \($0)"}
    
    // 화면 그리드형식으로 채워줌
    let layout: [GridItem] = [
        GridItem(.flexible(maximum: 80)),
        GridItem(.flexible(maximum: 80)),
        GridItem(.flexible(maximum: 80))
    ]
    
    var body: some View {
        // LazyHGrid
        // ScrollView horizontal
        ScrollView(.horizontal) {
            LazyHGrid(rows: layout, spacing: 20) {
                ForEach(title, id: \.self) { item  in
                    VStack {
                        Capsule()
                            .fill(Color.yellow)
                            .frame(height: 30)
                        
                        Text(item)
                            .foregroundColor(Color.blue)
                    }
                }
            }
        }
    }
}

// XCode 15 (iOS 17) 이후 PreView 변경 적용
#Preview("1.LazyVGrid") {
   LazyGridBasic1()
}

#Preview("2.LazyHGrid") {
   LazyGridBasic2()
}

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

열쓰님, SwiftUI에서 iOS 15 버전 이후 프리뷰가 생성되지 않는 문제에 대한 질문 감사드립니다.

말씀해주신 이슈는 Xcode 업데이트 후 프리뷰 관련해서 발생할 수 있는 일반적인 문제로 보입니다. 따라서 특정 강의에 한정되지 않고 iOS 15 버전 이후의 실습 환경에서 프리뷰가 정상적으로 작동하지 않을 때는 강사님이 알려주신 방법대로 새로운 프리뷰를 추가해주시는 것이 적절한 해결 방안이 됩니다.

‘LazyGrid’ 강의를 비롯한 이후 강의들에서도 프리뷰 문제가 지속된다면, 그동안 해왔던 방식대로 새로운 클래스나 구조체를 만들어서 프리뷰를 추가해주시는 것이 올바른 접근입니다.

계속해서 직접 해결책을 적용하며 학습을 진행해 보시고, 추가적인 질문이나 도움이 필요하신 경우에는 인프런의 수강 전 문의 게시판을 통해서 질문을 남기셔서 지식공유자님께 직접 도움을 받을 수도 있습니다.

학습에 보탬이 되셨길 바라며 더 궁금하신 점이 있으시면 언제든지 문의해 주세요.
감사합니다!

소리가 ㅠㅠ

0

53

2

index와 indexSet

0

59

2

NavigationBarItems Deprecated

0

96

3

Xcode version 문제

0

195

2

GalleryView 작성시, @State? @Bidnable? 의 차이점이 뭔지 궁금합니다.

0

303

2

페이지 이동에 관해 질문이 있습니다 !

0

339

2

scrollTransition 에서 phase 값을 찍어보고 싶습니다.

0

277

2

갤러리에서 슬라이더 변경시 gridSwitch 가 두번 실행됩니다.

0

307

2

유튜브 영상 플레이시 워닝 이슈 문의

0

518

1

ListBasic 강의 문의 - 딸기 id 오류 및 move 오작동

0

222

1

LazyGrid 강의 문의 - 데이터가 30개 인데 로우가 3줄이면 27개만 노출됨

0

269

1

ScrollView에서 질문 있습니다.

0

286

1

MVVM에서 처음

0

216

1

ExtractView, @Binding 강의에서 .previewLayout(.sizeThatFits) 함수 관련해서 질문드립니다.

0

336

2

VStack으로 프리뷰 생성

0

393

2

MVVM 폴더 안에서 Preview가 작동하지 않습니다.

0

249

1

Preview 질문

0

415

2

LazyGrid 질문 있습니다.

0

337

1

Textfield 입력시 한글 자음 모음 분리 현상이 발생 합니다

1

6531

2

Sheet가 바로 닫히는 문제와 홈 화면 액션 관련 문의

0

288

1

NavigationView를 NavigationStack 으로 변경관련입니다.

1

357

1

Frame 강의에서 다른 결과물이 나와요

0

387

1

Frame에 대한 개념 질문

0

251

1

ShareLink에서 이미지 링크에서 이미지 크기 제한이 있나요?

0

317

2