์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- XCTest
- BFS
- ํจ์คํธ์บ ํผ์ค
- designpattern
- ๋ฐฑ์ค
- MVVM
- Swfit
- realm
- Lv2
- raywenderlich
- CollectionView
- swift
- ํ๋ก๊ทธ๋๋จธ์ค
- node.js
- reactorkit
- arkit
- BOJ
- SnapKit
- SwiftUI
- RxSwift
- tableView
- TCA
- rxcocoa
- UIKit
- ios
- Flutter
- combine
- visionOS
- Xcode
- Kuring
- Today
- Total
๋ชฉ๋กapple/๐ SwiftUI & Combine (26)
lgvv98
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..
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๋ฒ์ด ํด๋ฆญ๋์..
NavigationView โ NavigationView ๋ค๋ฅธ๊ฑด ์๊ณ , navigationView๊ฐ ์ค์ฒฉ๋๋ ๋ฌธ์ ๋ง ์ฃผ์ํ๋ฉด ๋๋ค. ์ฝ๊ฒ ๋งํด์ ์ต์๋จ์์ NavigationView๋ฅผ ๊ฑธ๊ณ ๋ค๋ฅธ childView์๋ ๊ฑธ์ง ์์์ผ ํ๋ค. โ ์ฝ๋ import SwiftUI struct MyNavigationView : View { var body: some View{ // NavigationView๋ ์ฝ๊ฒ ๋งํด์ Embed in์ผ๋ก ๋ค๋น๊ฒ์ด์ ํ๋๊ฑฐ๋ผ๊ณ ์๊ฐ NavigationView { // โ๏ธ ์ต์๋จ์๋ง ์ด๊ฑธ ๊ฑธ์ด์ผ ํจ! // Text("MyNavigationView") MyList() .navigationBarTitle("์๋ ํ์ธ์!") // ๊ฐ์ด๋ฐ ํ์ดํ // .navigationBarTitle(..
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..
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..
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(..