Apple Developer Academy @ POSTECH, Afternoon Session 17 team's Mini Challenge Project

Overview

Logo

๐Ÿ“ฑ NatureUp

Apple Developer Academy @ POSTECH, Afternoon Session 17 team's MC1 Project

iOS Firebase

์‚ฌํšŒ๊ฐ€ ๋ฐœ์ „ํ•˜๋ฉฐ ํ™˜๊ฒฝ์ด ํŒŒ๊ดด๋˜๋Š” ์†๋„๊ฐ€ ๊ฐ€์†ํ™”๋˜๊ณ  ๊ทธ ์˜ํ–ฅ์ด ์„œ์„œํžˆ ๋“œ๋Ÿฌ๋‚˜๋ฉฐ, ์‚ฌ๋žŒ๋“ค์˜ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ๊ด€์‹ฌ๋„๋Š” ์ ์  ๋†’์•„์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋”ฐ๋ผ ์ •๋ถ€/๊ธฐ์—…/๊ฐœ์ธ์— ๊ด€๊ณ„์—†์ด ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ ์ผํŽ˜์ธ, ๋ฒ•๋ฅ  ๋ฐ ์ œ๋„, ํ™˜๊ฒฝ ๊ด€๋ จ ํŠธ๋ Œ๋“œ๊ฐ€ ์ ์  ๋งŽ์•„์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๋Š” ํ™˜๊ฒฝ ๋ณด์ „ ํ™œ๋™๋„ ์‰ฝ๊ณ  ์žฌ๋ฏธ์žˆ๊ฒŒ ์ฆ๊ธธ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์•Œ๋ ค์ฃผ๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ํ™œ๋™์— ๋Œ€ํ•œ ๋ถ€๋‹ด๊ฐ์€ ๋‚ฎ์ถ”๊ณ , ๋ฟŒ๋“ฏํ•จ์„ ๋”ํ•ด ๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ํ™˜๊ฒฝ ๋ณดํ˜ธ ํ™œ๋™์— ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์œ ๋„ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์ƒ๊ฐํ•˜๋Š” ๊ณผ์ •์—์„œ ๋– ์˜ค๋ฅธ ๊ฒƒ์ด ๊ฒŒ์ž„์˜ โ€˜ํ€˜์ŠคํŠธโ€™ ๋ฐฉ์‹์ด์˜€๊ณ , ๊ฒŒ์ž„์—์„œ ํ€˜์ŠคํŠธ๋ฅผ ํด๋ฆฌ์–ด ํ•˜๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ํ™˜๊ฒฝ ๋ณดํ˜ธ ํ™œ๋™์„ ์ฆ๊ฒ๊ฒŒ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž์‹ ์˜ ์œ„์น˜์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ํ™œ๋™์ด ๋‚˜ํƒ€๋‚˜๋Š” ๋ฐฉ์‹, ํ™œ๋™์„ ์„ธ๋ถ„ํ™”ํ•˜์—ฌ ์‰ฌ์šด ๋‹จ๊ณ„๋ถ€ํ„ฐ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์„ ๋– ์˜ฌ๋ ธ์Šต๋‹ˆ๋‹ค.
๊ทธ ๊ฒฐ๊ณผ๋กœ ํƒ„์ƒํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ โ€œNature Upโ€ ์•ฑ์ž…๋‹ˆ๋‹ค.

๐Ÿ“Œ Features

  • ์œ„์น˜ ๊ธฐ๋ฐ˜ ํ™˜๊ฒฝ ๋ณดํ˜ธ ํ™œ๋™ ์ถ”์ฒœ

    ์‚ฌ์šฉ์ž๊ฐ€ ์œ„์น˜ํ•œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์œ„์น˜์˜ ํŠน์ง•์„ ํŒŒ์•…ํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์‹ค์ฒœํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ ๋ณดํ˜ธ ํ™œ๋™ ๋ชฉ๋ก์„ ํ‘œ์‹œํ•ด์ค๋‹ˆ๋‹ค. (ํ˜„์žฌ ํฌํ•ญ๊ณต๊ณผ๋Œ€ํ•™๊ต ์บ ํผ์Šค์™€ ์ธ๊ทผ ์ง€์—ญ ์ง€์›)
    <์ด์Šˆ #30>
    <๊ฐ€๊นŒ์šด ์œ„์น˜ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฝ”๋“œ>

  • ํ™˜๊ฒฝ ๋ณดํ˜ธ ํ™œ๋™์„ ์ง„ํ–‰ํ•œ ๋ชจ์Šต์„ ์ดฌ์˜ํ•˜์—ฌ ์ธ์ฆ

    ์‚ฌ์šฉ์ž๋Š” ํ™˜๊ฒฝ ๋ณดํ˜ธ ํ™œ๋™์„ ์‹ค์ฒœํ•˜๋Š” ๋ชจ์Šต์„ ์ดฌ์˜ํ•˜์—ฌ ์„œ๋ฒ„์— ์—…๋กœ๋“œ๋ฅผ ํ†ตํ•ด ์ธ์ฆํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ถ”ํ›„ ๋‹ค๋ฅธ ์œ ์ €์˜ ํ‰๊ฐ€๋ฅผ ํ†ตํ•ด ๋ณด์ƒ(๊ฒฝํ—˜์น˜์™€ ํฌ์ธํŠธ)์„ ํš๋“ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ํ™˜๊ฒฝ ๋ณดํ˜ธ ํ™œ๋™์€ ์„ธ๊ฐ€์ง€ ๋‚œ์ด๋„(์ƒ/์ค‘/ํ•˜)๋ฅผ ํ†ตํ•ด ๊ฒฝํ—˜์น˜์™€ ํฌ์ธํŠธ๊ฐ€ ์ฐจ๋“ฑ ์ง€๊ธ‰๋ฉ๋‹ˆ๋‹ค.

  • ๋‹ค๋ฅธ ์œ ์ €๊ฐ€ ์ง„ํ–‰ํ•œ ํ™œ๋™ ํ‰๊ฐ€

    ์œ ์ €๋Š” ๋žœ๋ค ํ‰๊ฐ€ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๋‹ค๋ฅธ ์œ ์ €๊ฐ€ ์‹ค์ฒœํ•œ ํ™œ๋™๋“ค์„ ํ™•์ธํ•˜๊ณ  Good/Bad ๋กœ ํ‰๊ฐ€ํ•˜๊ณ  ํ‰๊ฐ€๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์†Œ๋Ÿ‰์˜ ๊ฒฝํ—˜์น˜๋ฅผ ์ง€๊ธ‰ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์œ ์ €๋Š” ํ™˜๊ฒฝ ํ™œ๋™ ๋ณดํ˜ธ์˜ ์ง์ ‘์ ์ธ ์‹ค์ฒœ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ์œ ์ €๋“ค์˜ ์‹ค์ฒœ๋„ ํ™•์ธํ•˜๊ณ  ํ‰๊ฐ€ํ•˜๋ฉด์„œ ํ™˜๊ฒฝ ๋ณดํ˜ธ ๊ต์œก๋„ ์ด๋ค„์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์—ฌ๋Ÿฌ ์œ ์ €๋“ค๊ณผ ๊ฒฝ์Ÿ (๋ฆฌ๋”๋ณด๋“œ)

    ์œ ์ €๋Š” ํ™˜๊ฒฝ ๋ณดํ˜ธ ํ™œ๋™๊ณผ ํ‰๊ฐ€๋ฅผ ํ†ตํ•ด ํš๋“ํ•œ ๊ฒฝํ—˜์น˜๋ฅผ ํ†ตํ•ด ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ๊ฒฝ์Ÿํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆœ์œ„๋Š” ์œ ์ €๋“ค์˜ ๊ฒฝํ—˜์น˜ ํš๋“ ์ˆœ์„œ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
    <์œ ์ € ๊ฒฝํ—˜์น˜ ์ˆœ์œ„ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฝ”๋“œ>

  • ๋ช…ํŒจ ์ปค์Šคํ…€์„ ํ†ตํ•œ ๋ณด์ƒ

    ์œ ์ €๋Š” ํ™˜๊ฒฝ ๋ณดํ˜ธ ํ™œ๋™๊ณผ ํ‰๊ฐ€๋ฅผ ํ†ตํ•ด ํš๋“ํ•œ ํฌ์ธํŠธ๋ฅผ ํ†ตํ•ด ๋ฆฌ๋”๋ณด๋“œ์— ํ‘œ์‹œ๋˜๋Š” ์ž์‹ ์˜ ๋ช…ํŒจ๋ฅผ ๊พธ๋ฐ€ ์ˆ˜ ์žˆ๋Š” ๋””์ž์ธ ์š”์†Œ๋“ค์„ ๊ตฌ์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์œ ์ €์˜ ๋ณด์ƒ ์‹ฌ๋ฆฌ๋ฅผ ์ถฉ์กฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿซ‚ Authors

๐Ÿ–ผ๏ธ Demo

๐ŸŽ† Screenshots

โœจ Skills & Tech Stack

๐Ÿ” License

MIT

Comments
  • CameraView ์‚ฌ์šฉ ํ›„ ํ™ˆ์œผ๋กœ Dismiss ํ•œ ์ดํ›„์— ์ƒ๊ธฐ๋Š” ์นด๋ฉ”๋ผ ๋ถˆ๋Šฅ ๋ฒ„๊ทธ

    CameraView ์‚ฌ์šฉ ํ›„ ํ™ˆ์œผ๋กœ Dismiss ํ•œ ์ดํ›„์— ์ƒ๊ธฐ๋Š” ์นด๋ฉ”๋ผ ๋ถˆ๋Šฅ ๋ฒ„๊ทธ

    https://user-images.githubusercontent.com/56063805/162908290-24ef118a-3e4a-448e-970e-df87365678c4.MP4

    ์œ„ ์˜์ƒ๊ณผ ๊ฐ™์ด ์ƒ์„ธ ํŽ˜์ด์ง€์—์„œ๋Š” dismiss ์ดํ›„์—๋„ ์นด๋ฉ”๋ผ๊ฐ€ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ™ˆ์œผ๋กœ dismiss ํ•œ ์ดํ›„์—๋Š” ์นด๋ฉ”๋ผ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

    https://user-images.githubusercontent.com/56063805/162908048-8bfc55a9-9e58-4aa5-859d-362c9f8b9a97.MP4

    ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ™ˆ ํ™”๋ฉด์—์„œ ๋ณด์—ฌ์ง€๋Š” 3๊ฐœ ๋ชฉ๋ก์—์„œ ์ธ์ฆ์„ ํ•œ ํ›„์— ํ™ˆ์œผ๋กœ dismiss ํ•œ ์ดํ›„์—๋„ ์นด๋ฉ”๋ผ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

    ๋„์™€์ฃผ์„ธ์š” @lingostar @unnnyong

    bug 
    opened by DevLuce 1
  • pop to root ๋ฒ„๊ทธ ์ˆ˜์ • ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค

    pop to root ๋ฒ„๊ทธ ์ˆ˜์ • ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค

    • [x] home โ†’ AutheticationView โ†’ AuthenticationSuccessView์˜ pop to root ๊ธฐ๋Šฅ ๋ฒ„๊ทธ ์ˆ˜์ • ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

    ์ฒซ๋ฒˆ์งธ ์‹คํ–‰์€ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€๋งŒ ๋‘๋ฒˆ์งธ ์‹คํ–‰๋ถ€ํ„ฐ ์นด๋ฉ”๋ผ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด AutheticationView์—์„œ ๋ฐ”๋กœ Home์œผ๋กœ ๋Œ์•„๊ฐ€๋Š” ํ˜„์ƒ์ด ์ƒ๊น๋‹ˆ๋‹ค. ํ•ด๋‹น ์˜์ƒ ์ถ”๊ฐ€ ํ•ฉ๋‹ˆ๋‹ค

    Hnet-image

    ํ‰๊ฐ€ํŽ˜์ด์ง€์— ์ ์šฉ๋œ pop to root ๊ธฐ๋Šฅ์€ ์ •์ƒ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค!

    bug 
    opened by JungYunseong 1
  • ๋ฆฌ๋”๋ณด๋“œ๋ทฐ ๋””์ž์ธ ์ˆ˜์ • ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

    ๋ฆฌ๋”๋ณด๋“œ๋ทฐ ๋””์ž์ธ ์ˆ˜์ • ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

    1~3๋“ฑ VStack์ด ์ž๋ฆฌ๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ์ฐจ์ง€ ํ•ด์„œ Hi-fi Prototype ๋””์ž์ธ ์ˆ˜์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

    • [x] ๊ธฐ์กด VStack์œผ๋กœ ์ž‘์„ฑ๋˜์–ด ์žˆ๋˜ ์ฝ”๋“œ HStack์œผ๋กœ ์ˆ˜์ •๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ ์ฐธ๊ณ  ํ•˜์‹œ๋ฉด ๋  ๊ฒƒ ๊ฐ™์•„์š” :)
    HStack() {
                            VStack {
                                Spacer()
                                Image(systemName: "crown.fill")
                                    .foregroundColor(.gray)
                                    .font(.system(size: 30))
                                    .padding(.bottom, 1)
                                Image("user1")
                                    .resizable()
                                    .frame(width: 70, height: 70)
                                    .clipShape(Circle())
                                    .shadow(radius: 10)
                                    .overlay(Circle().stroke(Color.gray, lineWidth: 4))
                                Image("userName1")
                                    .resizable()
                                    .aspectRatio(contentMode: .fit)
                            }
                            .frame(width: 110)
                            
                            VStack {
                                Image(systemName: "crown.fill")
                                    .foregroundColor(.yellow)
                                    .font(.system(size: 40))
                                    .padding(.bottom, 1)
                                Image("user1")
                                    .resizable()
                                    .frame(width: 100, height: 100)
                                    .clipShape(Circle())
                                    .shadow(radius: 10)
                                    .overlay(Circle().stroke(Color.gray, lineWidth: 4))
                                Image("userName1")
                                    .resizable()
                                    .aspectRatio(contentMode: .fit)
                            }
                            .frame(width: 110)
                                
                                VStack {
                                    Spacer()
                                    Image(systemName: "crown.fill")
                                        .foregroundColor(.brown)
                                        .font(.system(size: 30))
                                        .padding(.bottom, 1)
                                    Image("user1")
                                        .resizable()
                                        .frame(width: 70, height: 70)
                                        .clipShape(Circle())
                                        .shadow(radius: 10)
                                        .overlay(Circle().stroke(Color.gray, lineWidth: 4))
                                    Image("userName1")
                                        .resizable()
                                        .aspectRatio(contentMode: .fit)
                                }
                                .frame(width: 110)
                    }
                        .padding(.bottom)
    
    enhancement 
    opened by JungYunseong 1
  • ๊ธฐ๋Šฅ์ถ”๊ฐ€, ๊ธฐ๋Šฅ ๋ณ€๊ฒฝ, ๋ฒ„๊ทธ ์ˆ˜์ •

    ๊ธฐ๋Šฅ์ถ”๊ฐ€, ๊ธฐ๋Šฅ ๋ณ€๊ฒฝ, ๋ฒ„๊ทธ ์ˆ˜์ •

    • ProfileView์— ํ…์ŠคํŠธ ๋ฐ CollectionView ์ถ”๊ฐ€
    • Text์™€ ์‚ฌ์ง„ ์—ฌ๋ฐฑ ์กฐ์ ˆ
    • ํ™œ๋™์‚ฌ์ง„ ์˜ˆ์‹œ 21์žฅ ์ถ”๊ฐ€
    • Non-constant range: argument must be an integer literal์„ id: .self๋ฅผ ์ค˜์„œ ์˜ค๋ฅ˜ ์ˆ˜์ •ํ–ˆ๋Š”๋ฐ ์ด๊ฒŒ ์™œ ๋˜๋Š”์ง€๋Š” ์ดํ•ด๋ชปํ•จ
    • CollectionView๋ฅผ ๋„ํ˜•์ด ์•„๋‹Œ ์‚ฌ์ง„์œผ๋กœ ๋ณ€๊ฒฝ: ๊ฐ ์…€๋งˆ๋‹ค ๋‹ค๋ฅธ ์‚ฌ์ง„์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ• ์ฐพ๋Š”์ค‘
    opened by pig1606 1
  • Model ๋งŒ๋“ค๊ธฐ

    Model ๋งŒ๋“ค๊ธฐ

    https://github.com/DevLuce/NatureUp/blob/2886c887f16c0c51f0b7be191e64451b39047ff8/NatureUp/Views/Home/ActivityList.swift#L33-L35

    ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์žก์•„์•ผ ํ•  ๋•Œ๊ตฐ์š”.

    ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋Š” ๋ทฐ์˜ ๊ตฌ์„ฑ๊ณผ๋Š” ๋‹ฌ๋ฆฌ 'Activity' ๋ผ๋Š” ๊ตฌ์กฐ์ฒด ์•ˆ์˜ ์†์„ฑ์œผ๋กœ '์‹ค๋‚ด'์™€ '์•ผ์™ธ'๋ฅผ ๋„ฃ๊ณ  ๋ทฐ์— ๋ฟŒ๋ฆด ๋•Œ ๊ตฌ๋ถ„ํ•ด์„œ ๋ฟŒ๋ฆฌ๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•˜๋Š” ๊ฒŒ ์ข‹์ง€ ์•Š์„๊นŒ์š”?

    documentation 
    opened by lingostar 1
  • ๊ธฐ๋Šฅ์ถ”๊ฐ€ ๋ฐ ๋ฒ„๊ทธ ์ˆ˜์ • ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

    ๊ธฐ๋Šฅ์ถ”๊ฐ€ ๋ฐ ๋ฒ„๊ทธ ์ˆ˜์ • ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

    1. ์ธ์ฆ์™„๋ฃŒ ํŽ˜์ด์ง€ ์ถ”๊ฐ€
    2. ProgressView ๊ธฐ๋Šฅ ์ˆ˜์ •
    3. ํ‰๊ฐ€ํŽ˜์ด์ง€ ํ•˜๋‹จ์— ์—ฌ๋ฐฑ์ด ์ƒ๊ฒจ ignoreSafeArea ์ฝ”๋“œ ์ถ”๊ฐ€ ํ•˜์˜€์Šต๋‹ˆ๋‹ค
    4. ํ‰๊ฐ€ํŽ˜์ด์ง€์—์„œ ์นด๋ฉ”๋ผ ์ดฌ์˜ ํ›„ ๋‚˜ํƒ€๋‚˜๋Š” '์ธ์ฆํ•˜๊ธฐ'๋ฒ„ํŠผ ํ…์ŠคํŠธ ๊ตต๊ธฐ ๋ณ€๊ฒฝํ•˜์˜€์Šต๋‹ˆ๋‹ค (semibold โ†’ bold)
    5. ํ‰๊ฐ€ํŽ˜์ด์ง€์—์„œ '๋‹ค๋ฅธ์‚ฌ๋žŒ ํ‰๊ฐ€ํ•˜๊ธฐ' ์ œ๋ชฉ ์‚ญ์ œํ•˜์˜€์Šต๋‹ˆ๋‹ค (๋””์ž์ธ ์ˆ˜์ •)
    6. ์ปจํ…ํŠธ๋ทฐ์˜ ๋„ค๋น„๊ฒŒ์ด์…˜๋ทฐ์— ์ ์šฉ๋˜์ง€ ์•Š์•˜๋˜ accentColor์„ ์ถ”๊ฐ€ ํ•˜์˜€์Šต๋‹ˆ๋‹ค
    opened by JungYunseong 1
  • ๋ฆฌ๋”๋ณด๋“œ ๋ทฐ ์ˆ˜์ • ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค

    ๋ฆฌ๋”๋ณด๋“œ ๋ทฐ ์ˆ˜์ • ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค

    @Shin-jun

    • [x] ๋ฆฌ๋”๋ณด๋“œ ๋ทฐ ๋‚ด์— ์žˆ๋Š” '๋‚ด ๋“ฑ์ˆ˜'์™€ 'ํฌ์ธํŠธ'๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ•์Šค ํฌ๊ธฐ ์ˆ˜์ • ํ•ด์ฃผ์„ธ์š”! ์•„๋ž˜ ์žˆ๋Š” ์ฒจ๋ถ€ํ•œ ์ฝ”๋“œ ์ฐธ๊ณ  ํ•˜์‹œ๋ฉด ๋  ๊ฒƒ ๊ฐ™์•„์š”.
    HStack {
                ZStack{
                    RoundedRectangle(cornerRadius:10)
                        .fill(Color.white)
                        .opacity(0.1)
                        .frame(width:85, height:27)
                        .overlay(
                            RoundedRectangle(cornerRadius: 8)
                                .stroke(Color(red: 112/255, green: 210/255, blue: 163/255), lineWidth: 2)
                        )
                    Text("๋‚ด๋“ฑ์ˆ˜ :  \(no)")
                        .font(.system(size: 12))
                }
                Spacer()
                ZStack{
                    RoundedRectangle(cornerRadius:10)
                        .fill(Color.white)
                        .opacity(0.1)
                        .frame(width:85, height:27)
                        .overlay(
                            RoundedRectangle(cornerRadius: 8)
                                .stroke(Color(red: 112/255, green: 210/255, blue: 163/255), lineWidth: 2)
                        )
                    Text("๊ฒฝํ—˜์น˜ : \(point)")
                        .font(.system(size: 12))
                }
            }
            .padding()
    
    • [x] ์ถ”๊ฐ€๋กœ 'ํฌ์ธํŠธ โ†’ ๊ฒฝํ—˜์น˜' ๋กœ ์ˆ˜์ •๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
    enhancement 
    opened by JungYunseong 1
  • HomeView ์ˆ˜์ •๋ถ€ํƒ๋“œ๋ ค์š”

    HomeView ์ˆ˜์ •๋ถ€ํƒ๋“œ๋ ค์š”

    MyStatus

    • [x] Divider ๊ธธ์ด ์ˆ˜์ •

    Activity

    • [x] Stroke ์ƒ‰์ƒ๋ณ€๊ฒฝ (red: 151.0/255, green: 151.0/255, blue: 151.0/255)

    • [x] NavigationLink(destination: AuthenticationView) ์ถ”๊ฐ€

    HomeView

    • [x] ๋žœ๋คํ‰๊ฐ€ ์ง„ํ–‰ํ•˜๊ธฐ Button Stroke ์ œ๊ฑฐ

    ์ˆ˜์ • ๋ถ€ํƒ๋“œ๋ ค์š”

    enhancement 
    opened by JungYunseong 1
  • ์œ„์น˜๋ณ„ ๊ฐ€๋Šฅ ํ™˜๊ฒฝ ํ™œ๋™ ๋ฆฌ์ŠคํŠธ ์ž‘์„ฑ

    ์œ„์น˜๋ณ„ ๊ฐ€๋Šฅ ํ™˜๊ฒฝ ํ™œ๋™ ๋ฆฌ์ŠคํŠธ ์ž‘์„ฑ

    ํ™˜๊ฒฝ ํ™œ๋™ ๋ฆฌ์ŠคํŠธ

    ๊ฑด๋ฌผ ๋‚ด, ๊ธธ, ์‚ฐ, ๋ฐ”๋‹ค, ๊ฐ• ๋“ฑ์—์„œ ๊ฐ€๋Šฅํ•œ ํ™˜๊ฒฝ ํ™œ๋™ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ณธ ์ด์Šˆ์—์„œ ์ฝ”๋ฉ˜ํŠธ๋ฅผ ํ†ตํ•ด ์ง€์†์ ์œผ๋กœ ์—…๋กœ๋“œํ•ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

    type์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • building (๊ฑด๋ฌผ ๋‚ด)
    • road (๊ธธ)
    • mountain (์‚ฐ)
    • ocean (๋ฐ”๋‹ค)
    • river (๊ฐ•)
    • market (์ƒ์ ) *์ถ”๊ฐ€ ๋จ
    documentation 
    opened by DevLuce 3
Owner
๊ฐœ๋ฐœ์ž์•„์นด๋ฐ๋ฏธ_ํฌ์Šคํ…
๊ฐœ๋ฐœ์ž์•„์นด๋ฐ๋ฏธ_ํฌ์Šคํ…
Challenge-M2Y-TM4 - A challenge provided by Mobile2You, with the purpose of analyzing knowledge about UI, API consumption

Challenge-M2Y-TM4 Um desafio proporcionado pela Mobile2You, com proposito de ana

Felipe Brigagรฃo de Almeida 0 Jan 31, 2022
TakeHomeChallenge - iOS Tech Challenge - Take Home Challenge

iOS Tech Challenge - Take Home Challenge Thank you for your interest in taking t

Michael 0 Feb 1, 2022
An app for Moscow Digital Academy course

AR Drawing This is an app for Moscow Digital Academy course. In this fun app for drawing with geometric shapes and .scn files Interface and Features:

null 0 Dec 1, 2021
My Winning Submission for Apple's WWDC 2021 Swift Student Challenge

Symmetries This playground book gives a quick insight into the symmetry groups of 3-dimensional objects like the platonic solids. The user can play ar

David 4 Apr 23, 2022
My winning contribution to Apple's Swift Student Challenge 2021

SynthApp My winning contribution to Apple's Swift Student Challenge 2021 This repository contains an Xcode project and the final Swift Playgrounds fil

Sl4sh! 1 Dec 4, 2021
PostsExam - A Valhalla take home exam for Mobile App Developer

Posts - iOS A Valhalla take home exam for Mobile App Developer - iOS position Cr

Val Moratalla 0 Mar 24, 2022
iOS NBA Challenge Based on Xcode 12.4, PR2S Project By: Oscar Pastรกs

iOS NBA Challenge Based on Xcode 12.4, PR2S Project By: Oscar Pastรกs iOS This test app consists of a list of users Considerations This test should be

null 0 Nov 26, 2021
Starter project for the iOS code challenge

iOS Base Project for Podium Take-Home Challenge Introduction We have provided two version of this base project: one using UIKit, one using SwiftUI. Th

Podium 1 Dec 29, 2021
Challenge-vip-delivery - Project for VIP (Clean Swift) Architecture Dev Sprints on Devpass

VIP (Clean Swift) - Delivery App ?? Neste desafio, aplicaremos conceitos da arquitetura VIP para finalizar a implementaรงรฃo de um aplicativo. Desenvolv

Devpass 5 Oct 24, 2022
Challenge-swiftui-space - Project for SwiftUI Dev Sprints on Devpass

SwiftUI Challenge - Space App ?? Neste desafio, desenvolveremos a interface de u

Devpass 7 Dec 27, 2022
[Accepted] My WWDC21 Swift Student Challenge submission

My WWDC21 Swift Student Challenge submission I made a playground book that teaches you the basics of ARKit through interactive lessons. It covers posi

Zheng 25 Nov 12, 2022
WWDC2020 Swift Student Challenge - TheHackOfRayTracing playground book

wwdc2021 My wwdc2021 submission The HackOf RayTracing How to run Install swift playground from App Store on your Mac or iPad Double clik TheHackOfRayT

haoboxuxu 20 May 20, 2022
[Accepted] My WWDC2021 Swift Student Challenge submission chosen as one of the 350 winners!

Genetic Algorithms | ๏ฃฟWWDC21 This project was entirely built with SwiftUI. To direct download this Playground and run it on your Mac or IPad, click he

Fred Lacis 2 Dec 22, 2021
๐ŸŽ‰ WWDC 2021 Swift Student Challenge Winner ๐ŸŽ‰ Dance Party allows users to record choreography and play against other users to try and match the key poses!

?? Dance Party ?? ?? WWDC 2021 Swift Student Challenge Winner ?? Installation Steps (Works on iPad Only) Clone or Download Unzip the .playgroundbook.z

Alan Yan 7 Oct 17, 2022
The Feed API challenge with swift

The Feed API challenge - iOSLeadEssentials.com It's time to put your skills to the test! You are called to implement the RemoteFeedLoader to load a co

Andrew Marmion 0 Oct 28, 2021
Code Challenge - Using Alamofire is a Swift-based, HTTP networking library, also Codable for Data Model and Combine Framework .

Code Challenge ##Using Alamofire is a Swift-based, HTTP networking library, also Codable for Data Model and Combine Framework . Alamofire is one of th

Eng Angelo Saber 0 Nov 24, 2021
US bank coding exercise challenge

USBankcodingexercise US bank coding exercise challenge This repo has two projects Project to demo MVVM design pattern problem statement - read data fr

null 0 Nov 25, 2021
Flipgrid Challenge

FlipgridChallenge Overview The project follows MVVM-FlowViewController architecture that scales nicely as more screens/flows are added. I have added c

null 0 Dec 1, 2021
Birthdays App Challenge set by Chalkboard

Chalkboard Birthdays App Challange This is an app that utilises a web api to provide the user an ordered list of birthdays youngest to oldest How to i

Rob Copping 0 Nov 25, 2021