강의

멘토링

커뮤니티

Inflearn Community Q&A

drfranken1192's profile image
drfranken1192

asked

Part 1: Learning iOS for Real Beginners (SwiftUI, SwiftData, 2024)

Inserting Images and Section Titles Using Data Received in JSON (2)

6-7) 이미지 사이즈 지정 위치 질문드립니다.

Resolved

Written on

·

159

1

안녕하세요 애구마님!

6-7) 7:50 쯤에 이미지의 사이즈를 지정해주기 위해 frame() 작성하시는 부분에 질문이 있습니다.

bigBanner의 이미지 사이즈 지정 시

AsyncImage(url:URL(string:bigBanner)) { image in image
         .resizable()
         .cornerRadius(10)
         .aspectRatio(contentMode: .fit)

         // 여기서 사이즈 지정
         .frame(width: 300, height: 525)
}

poster의 이미지 사이즈 지정 시

 AsyncImage(url: url) { image in
        image
           .resizable()
} placeholder: {
        ProgressView()    
           .tint(Color.white)
}
// 여기서 사이즈 지정
.frame(width: 100, height: 175)

첫 번째 AsyncImage를 작성하셨을 때 이미지 사이즈는 image에서 직접적으로 작성하셨는데 두번째 포스터들의 이미지 사이즈를 작성하실 때는 placeholder 아래쪽에 작성하신 이유가 궁금합니다.

답변 부탁드립니다.

감사합니다 :)

iosswiftswiftuiswift5.5

Answer 1

0

daynightcoding님의 프로필 이미지
daynightcoding
Instructor

drfranken님 안녕하세요!

먼저 강의 수강해주셔서 감사드립니다

날카로운 질문인데요 ㅎㅎ

저도 왜 그랬을가 고민해봤는데, 큰 뜻이 없었던것 같습니다.

 

다만 코드 설명을 살짝 드리자면, 아래 두 코드는 같은 코드입니다.

.frame을 바깥에 두면 image의 크기와 placeholder내부의 뷰 크기를 둘다 제어해주고요.

만약 개별적으로 사이즈를 다르게 하고 싶다면, 내부에 각각 써주면 됩니다.

강의에서는 image크기와 placeHolder의 크기가 같기 때문에, 밖에 적으나 안에 적으나 상관이 없을거 같아요.

그래서, 두 코드를 다르게 작성했던거 같습니다.

감사합니다!

AsyncImage(url: url) { image in
    image
        .resizable()
        .cornerRadius(10)
        .aspectRatio(contentMode: .fit)
        .frame(width: 300, height: 525)
} placeholder: {
    RoundedRectangle(cornerRadius: 10)
        .fill(Color.gray)
        .opacity(0.4)
        .overlay(
            ProgressView()
                .tint(Color.white)
       )
        .frame(width: 300, height: 525)
}

 

AsyncImage(url: url) { image in
    image
        .resizable()
        .cornerRadius(10)
        .aspectRatio(contentMode: .fit)
} placeholder: {
    RoundedRectangle(cornerRadius: 10)
        .fill(Color.gray)
        .opacity(0.4)
        .overlay(
            ProgressView()
                .tint(Color.white)
       )
}
.frame(width: 300, height: 525)

 

drfranken1192's profile image
drfranken1192

asked

Ask a question