apple/SwiftUI & Combine 28

[SwiftUI] TabView + CustomTabView

TabView + CustomTabView 탭뷰는 그렇게 어렵지 않다. 하지만 커스텀 탭뷰는 탭뷰를 사용하는게 아니므로 각별히 주의하자! ✅ TabView import SwiftUI struct MyTabView : View { var body: some View{ TabView { // 탭뷰를 걸어준다. // 보여질 화면 // Text("1번") // .fontWeight(.black) // .font(.largeTitle) MyView(title: "1번", bgColor: Color.red) // 뷰 .tabItem { // 뷰에 탭 아이템을 건다! Image(systemName: "airplane") Text("1번") } .tag(0) // tag설정 // Text("2번") // .fontWe..

[SwiftUI] GeometryReader

GeometryReader ✅ GeometryReader에 대해서 알아보자. GeometryReader는 쉽게 말해서 디바이스 기기마다 대응하기 위함이다. 음,, 대충 오토 레이아웃이라고 생각하면 좋아! ✅ 코드 import SwiftUI enum Index { // enum으로 처리한다. case one, two, three } struct MyGeometryReaderVStack : View { @State var index: Index = .one // 초기 상태는 one으로 var body: some View{ // 부모뷰의 비율을 사용 가능하다. GeometryReader{ geometry in VStack{ Button(action:{ // 버튼이 클릭되었을때 로직 print("1번이 클릭되었..

[SwiftUI] NavigationView

NavigationView ✅ NavigationView 다른건 없고, navigationView가 중첩되는 문제만 주의하면 된다. 쉽게 말해서 최상단에서 NavigationView를 걸고 다른 childView에는 걸지 않아야 한다. ✅ 코드 import SwiftUI struct MyNavigationView : View { var body: some View{ // NavigationView란 쉽게 말해서 Embed in으로 네비게이션 하는거라고 생각 NavigationView { // ❗️ 최상단에만 이걸 걸어야 함! // Text("MyNavigationView") MyList() .navigationBarTitle("안녕하세요!") // 가운데 타이틀 // .navigationBarTitle(..

[SwiftUI] List (tableView in UIKit)

List (tableView in UIKit) ✅ SwiftUI의 List에 대해서 알아보자. List를 구성하는건 크게 어렵지 않다. ✅ MyList import SwiftUI struct MyList: View { // 다른쪽에서 데이터를 받아올 것이기 때문에 @Binding var isNavigationBarHidden: Bool // 바인딩의 경우에는 생성자 필수! init(isNavigationBarHidden: Binding = .constant(false)) { if #available(iOS 14.0, *){ } else { // 아래 버전에서는 푸터가 있어서 이 코드를 통해서 없애야 한다. UITableView.appearance().tableFooterView = UIView() } U..

[SwiftUI] Alert

Alert ✅ SwiftUI에서 Alert를 사용하는 것을 알아보자. 아주 간단한 내용을 기반으로 커스텀 하는 것은 알아서 해보기! import SwiftUI struct contentView: View { // struct는 class와 다르게 데이터가 고정이라서 변경을 하려면 @state키워드 사용 // mutating과 닮아있다. @State var shouldShowAlert: Bool = false var body: some View { Button( action: { print("확인 버튼이 클릭되었다.") self.shouldShowAlert = true }) { Text("확인") .fontWeight(.bold) .foregroundColor(.white) .padding() .frame..

[SwiftUI] VStack, HStack, ZStack

VStack, HStack, ZStack ✅ 스택뷰에 대해서 알아보자. ✅ VStack import SwiftUI struct MyVstack : View { var body: some View { // VStack에는 기본적인 spacing이 있어서 0으로 해주기 // alignment는 정렬 옵션 VStack(alignment: .trailing, spacing: 0) { // 우측으로 붙이기 위한 3가지 방법! // 공간을 아예 주어서 정렬하기 // Spacer() // opacity(0) 통해서 선을 안보이게 한다. Divider().opacity(0) // 아예 Rectangle 하나 더 만들기 // Rectangle() // .frame(height: 1) // Text("글자") .font(..

[SwiftUI] How to set Image in SwiftUI

How to set Image in SwiftUI ✅ SwiftUI에서 Image를 세팅하는 방법에 대해 알아봅니다. ✅ CircleImageView.swift import SwiftUI struct CircleImageView : View { var body: some View { //Image(systemName: "bolt.circle") // .font(.system(size: 200)) // 시스템 이미지는 font로 크기를 조절함. // .foregroundColor(.yellow) // .shadow(color: .gray, radius: 2, x: 2, y: 10) Image("myImage") .resizable() // 이미지의 크기를 조정해주기 위해서 .scaledToFill() /..

[SwiftUI] Info.plist가 없을 때🤔

Info.plist가 없을 때 ✅ SwiftUI로 프로젝트를 만들었는데 Info.plist가 없었다. 다크모드를 막고 Light 모드 전용으로 만들려다가 .. 어쩌지..? 싶었음 자 그럼 어떻게 하는지 ㄱㄱ 다음과 같이 Info.plist 파일을 생성해줍니다. 생성한 파일은 비어 있어서 안에 속성이 잘 적용되는지 확인하기 위해 Appearance를 넣어줍니다. 이후에 우측에 보면은 Info.plist의 full path가 있을탠데 이걸 복사해줍니다. ex) /User/guest/Desktop/SwiftUIPactice/Preview Content/Info.plist 이 경로를 아래 사진과 Info.plist File에 넣어줍니다. 그 이후에 Target -> Build Phases를 보면 아래와 같은 항..