Spacer() 를 넣으니 예제처럼 SafeArea 확보가 안됩니다.
490
21 asked
struct MatchedGemomatryEffectInter: View {
@State private var isToogle: Bool = false
var body: some View {
VStack {
RoundedRectangle(cornerRadius: 20)
.frame(width: 100, height: 100)
.offset(y: isToogle ? UIScreen.main.bounds.height * 0.7 : 0)
Spacer()
}
.frame(maxWidth: .infinity,maxHeight: .infinity)
.background(.green)
.onTapGesture {
withAnimation(.spring()) {
isToogle.toggle()
}
}
}
}안녕하세요.
동일하게 작성했는데 저는 상하 safeArea 가 채워진체
나옵니다. 타겟은 iOS15 입니다.

강의 관련된 질문은 언제나 환영입니다 😄
코드 관련 상세하게 작성해주시면 더 좋아요! (상세코드를 붙여넣기 해주세요)
마크다운을 사용해서 편리하게 글을 작성하세요
먼저 유사한 질문이 있었는지 먼저 검색 해보는 습관~
인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요
Answer 3
0
안녕하세요 랑프님.
확인이 늦어 이제 답변 드리네요 죄송합니다.
iOS15 버전 이후로는 .background 적용시 자동으로 ignoreSafeArea 가 적용되게 xcode 에서 설정이 되었습니다. 그래서 .ignoreSafeArea(edges:[]) 를 사용하시면 위아래 색이 적용안하게 하실 수 있습니다.
보다 자세한 사항은 아래 링크를 확인해 주세요
감사합니다.
https://developer.apple.com/documentation/swiftui/view/background(_:ignoressafeareaedges:)

struct MatchedGeomatryEffectInter: View {
@State private var isToggled: Bool = false
@Namespace private var namespace
var body: some View {
VStack {
if !isToggled {
RoundedRectangle(cornerRadius: 20)
.matchedGeometryEffect(id: "rectangle", in: namespace)
.frame(width: 100, height: 100)
// matchedGeometry Effect id 값과 nameSpace
}
// .offset(y: isToggled ? UIScreen.main.bounds.height * 0.7 : 0)
Spacer()
if isToggled {
RoundedRectangle(cornerRadius: 20)
.matchedGeometryEffect(id: "rectangle", in: namespace)
.frame(width: 300, height: 100)
}
} //: VSTACK
.frame(maxWidth: .infinity, maxHeight: .infinity)
// 질문 답변
// .background(Color.green.ignoresSafeArea(edges: .bottom)) // 위에만 색적용 안되게 하기
.background(Color.green.ignoresSafeArea(edges: [])) // 모든 부위 .top, .bottom, .leading, .traling 적용안시키기
.onTapGesture {
withAnimation(.spring()) {
isToggled.toggle()
}
}
}
}
0
상하 safeArea. 마진이 나오게 해야 하는데 덮어 버려서 문제가 되는건데, 위에 답변은 덮는 방법을 안내해 주고 있습니다.
강의에는 safeArea 마진이 유지된체 나옵니다.
저도 그렇게 하는 방법을 문의 했습니다.
-1
안녕하세요, 인프런 AI 인턴입니다.
SafeArea가 기대한 대로 확보되지 않는 문제에 대해 질문 주셨군요. 타겟이 iOS15인 경우, SwiftUI에서 SafeArea를 다루는 방식에 주의해야 합니다. 예제 코드에서는 Spacer()를 사용하여 뷰의 상하 공간을 확보하려 하셨으나, 문제가 발생한 것으로 보입니다. SwiftUI 레이아웃에서는 동적으로 크기가 조절되는 컴포넌트의 위치를 결정하기 위해 Spacer()를 사용하곤 합니다. 하지만, SafeArea를 정확히 제어하기 위해서는 다른 방법을 사용해야 할 수도 있습니다.
.edgesIgnoringSafeArea(.all)
위 코드를 .background(.green) 코드 라인 뒤에 추가함으로써, 뷰가 SafeArea를 무시하고 화면의 모든 영역으로 확장될 수 있도록 할 수 있습니다. 이렇게 하면 SafeArea 밖으로 확장되어 기대하신 대로 동작할 것입니다. 다만, .edgesIgnoringSafeArea(.all)을 사용할 때는 해당 뷰가 화면의 모든 영역을 사용한다는 점을 명심해야 합니다. 필요한 경우 특정 방향에만 적용하고자 한다면 .all 대신 .top, .bottom, .leading, .trailing 등을 적절히 조합하여 사용할 수 있습니다.
또한, iOS 버전에 따라 SafeArea의 동작이나 SwiftUI의 동작이 조금씩 달라질 수 있으니, 가능하다면 다양한 기기와 OS 버전에서 테스트 해보시는 것도 좋은 방법입니다.
질문하신 내용 외에 추가적으로 궁금한 사항이나 다른 프로그래밍 관련 질문이 있으시면 언제든지 문의해 주세요. 😄
수강 기간 연장 문의
0
27
1
수강연장부탁드려도될까요..
0
41
2
Combine Playground 에서 실행 시
0
55
2
70강 - 글로벌 액터로 격리된 Protocol 을 extension 에서 conform 시 타입 본체의 격리 수준 질문
0
41
1
searchable이 화면 하단에 위치해요
0
61
2
Drawing Cycle 관련 질문
0
72
1
앱 제작 시 주로 코드로 작성하시는 이유가 있을까요?
0
95
2
델리게이트 패턴 관련 질문
0
66
2
ios 애드몹 광고
0
133
2
수강 기간 연장 부탁드릴 수 있을까요?
0
61
1
Sorted, Filter, Map - UserViewModel 부분 오류 발생
0
102
1
ViewBuilder 강의 관련 질문입니다.
0
80
1
CoreData Array의 변화에 따른 SwiftUI View 변화 적용(with @Observable Macro)
0
205
2
init-deinit의 무한루핑을 벗어나는 방법이 궁금합니다.
1
167
2
Apple 공식 문서 보는법
0
325
2
5월 업데이트 예정이었던 , iOS17 컨텐츠 SwifData 업데이트 언제 되나요 ?
0
252
1
Local Notification 예제 문의
0
320
2
Local Notification 강의 편집오류 있어요
0
236
2
강의중 코드폴딩 단축키 (커맨트+옵션+왼쪽방향키)
0
208
2
코어데이터에 중복값 입력 방지
0
313
1
Combine 관련 질문드립니다.
0
244
1
if let else 질문있습니다.
0
220
1
강의 Weak Self 코드 실행시 오류에 대해
0
653
1
SwiftData가 Core Data를 대체하는지요?
0
2111
1

