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

SwiftUI15

DispatchQueue / GCD / multi threading / 스레드 / 비동기 코드를 짜다 보면 DispatchQueue를 되게 자주 만나고 사용한다. 그런데 이것이 무엇인지에 대한 개념과 이해가 부족했기 때문에 좀 정리하고 넘어가보고자 한다. 스레드(Thread) 스레드는 동시에 실행되는 작업의 단위이다. 각각의 스레드는 독립적으로 실행되고, '코드의 흐름을 병렬로 실행'할 수 있다. -> 만약 스레드가 1개만 있다면 코드의 순서대로 하나씩 위에서 아래로 쫙 실행해야 하는데, 이걸 스레드에 쫙 나눠줘서 동시에 병렬적으로 실행할 수 있다는 것이다. 메인 스레드(Main Thread) iOS 앱은 기본적으로는 메인 스레드(Main Thread)라는 단일 스레드 환경에서 동작한다. 메인 스레드의 역할은 UI 업데이트, 사용자 입력 처리, 애니메이션, 레이아웃 계산 등이 있다. 즉 사용.. 2023. 5. 26.
10. [SwiftUI] Spacer() 같은 사이즈로 계속 resize 되는 것을 알 수 있다! Spacer는 minLength 파라미터가 있다!(옵셔널) Spcaer(minLength: nil) == Spacer() minLength를 nil로 두어도 어느정도의 최소길이는 default로 있음. 만약 스택에 수평패딩을 많이 주면 중앙으로 쪼그라 드는데 붉은 정사각형의 스페이서만 최소 길이를 정해준 케이스이다.(혼자만 긴 것을 알 수 있다.) (오른쪽 사진은 minLength: 0인 케이스_완전 붙게 할 수도 있다.) 종료 및 설정 버튼을 만드는 시나리오 버튼 사이에 스페이서를 넣어 HStack로 묶고, 이 HStack과 스페이서를 VStack으로 묶어주면 된다. // Created by Toughie on 2023/04/04. // impo.. 2023. 4. 5.
9. [SwiftUI] .padding() 패딩 고정적인 프레임을 정하는 방법 외에, 패딩을 활용하는 방법도 있다. (고정 된 프레임과 다르게, 텍스트가 길어지면 패딩은 다이나믹하게 적용됨.) 패딩에 패딩에 패딩 // Created by Toughie on 2023/04/04. // import SwiftUI struct padding_spacer: View { var body: some View { VStack(alignment: .leading) { Text("Hello, Toughie!") .font(.largeTitle) .fontWeight(.semibold) .padding(.bottom,20) Text("Hi, SwiftUI! I love coding.Hi, SwiftUI! I love coding.Hi, SwiftUI! I love co.. 2023. 4. 4.
8. [SwiftUI] VStack, HStack, ZStack 스택 VStack(수직 스택), HStack(수평 스택), ZStack(앞/뒤 스택) VStack (H,Z도 유사함) VStack(alignment: HorizontalAlignment, spacing: CGFloat?, content: () -> View) // spacing default값은 8, nil 할당 or 지우면 간격 8 적용 // content는 void -> View 함수타입. /* 클로저 문법 최적화를 통해 아래와 같은 형태로 많이 쓰는 것임. VStack { } */ HStack 예시 ZStack 예시 ( .overlay를 떠올려 보자) Stack in Stack in Stack in Stack ... 스택 안에 스택을 쌓으며 무궁무진한 조합을 만들 수 있다. // Created by To.. 2023. 4. 3.
7. [SwiftUI] .background() & .overlay() 백그라운드 & 오버레이 .background() 백그라운드 색 변경, Shape 활용, 프레임 활용 등 조합은 무궁무진하다. // Created by Toughie on 2023/04/03. // import SwiftUI struct Background_Overlay: View { var body: some View { Text("Hello, World!") .background( Circle() .fill(LinearGradient(colors: [Color.red, Color.blue], startPoint: .leading, endPoint: .trailing)) .frame(width: 100, height: 100, alignment: .center) ) .background( Circle() .fill(Linear.. 2023. 4. 3.
6. [SwiftUI] .frame() 프레임 화면 위의 모든 객체들은 default 프레임(직사각형 영역)이 있음 alignment -> 프레임 내에서 객체를 어떻게 정렬할 것인가? 아래 결과물과 코드를 보면 프레임이 무엇인지 더 잘 알 수 있을 것이다. (프레임 프레임 프레임 프레임 프레임...) 이전 프레임들을 마지막 프레임이 감싸는 형태임 (마지막이 푸른 프레임이니, 해당 프레임의 alignment를 .top으로 해주면 내부에 있는 프레임들이 모두 top으로 정렬됨 (정확히는 노란 프레임이 정렬된 것인데, 노란 프레임 안에 핑크, 보라, 오렌지..그리고 Text고유 프레임(초록색)이 모두 있으니..) 약간 현대미술 같은.. ㅋㅋㅋ 사실 이렇게 프레임마다 색을 설정해주는 식으로 하지는 않겠지만.. 프레임의 영역을 확인하기 위해서 백그라운드 컬러.. 2023. 4. 3.