From 7c3e7ca3eeb23f062a6cf9e501fef9fd744db4d2 Mon Sep 17 00:00:00 2001 From: sumnii Date: Tue, 17 May 2022 17:34:37 +0900 Subject: [PATCH 1/2] [EX] make streak design example in DictView --- kWordle/View/DictView.swift | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/kWordle/View/DictView.swift b/kWordle/View/DictView.swift index 3820732..96e2a04 100644 --- a/kWordle/View/DictView.swift +++ b/kWordle/View/DictView.swift @@ -23,8 +23,11 @@ struct DictView: View { VStack(spacing: 24) { VStack(spacing: 8) { HStack { - Text(answer) - .font(.custom("EBSHMJESaeronR", size: 28)) + HStack(spacing: 4) { + Text(answer) + .font(.custom("EBSHMJESaeronR", size: 28)) + streakButton() + } Spacer() Button { actionSheet() @@ -77,18 +80,33 @@ struct DictView: View { .frame(minHeight: 35) } + private func streakButton() -> some View { + return ZStack { + Rectangle() + .frame(width: 80, height: 28) + .foregroundColor(.hBlack) + HStack(spacing: 0) { + Text("연승끝..") + .foregroundColor(.hWhite) + .font(.custom("EBSHMJESaeronR", size: 14)) + Text("🤯") + .font(.system(size: 12)) + } + } + } + private func copyButton() -> some View { return ZStack { - RoundedRectangle(cornerRadius: 5) - .frame(width: 72, height: 36) - .foregroundColor(.hLigthGray) - HStack { + RoundedRectangle(cornerRadius: 5) + .frame(width: 72, height: 36) + .foregroundColor(.hLigthGray) + HStack(spacing: 4) { Text("공유") .foregroundColor(.hBlack) .font(.custom("EBSHMJESaeronR", size: 17)) Image(systemName: "arrowshape.turn.up.left") .resizable() - .frame(width: 19, height: 15) + .frame(width: 15, height: 12) .foregroundColor(.hBlack) } } From 62d96418c093fccf21830869a809f7bfd4842a78 Mon Sep 17 00:00:00 2001 From: sumnii Date: Thu, 19 May 2022 13:17:30 +0900 Subject: [PATCH 2/2] [EX] add streak bubble on header --- .../StreakBubble.imageset/Contents.json | 23 ++++++++++ .../StreakBubble.imageset/StreakBubble1x.png | Bin 0 -> 846 bytes .../StreakBubble.imageset/StreakBubble2x.png | Bin 0 -> 1711 bytes .../StreakBubble.imageset/StreakBubble3x.png | Bin 0 -> 2712 bytes kWordle/View/MainView.swift | 41 ++++++++++++++---- 5 files changed, 56 insertions(+), 8 deletions(-) create mode 100644 kWordle/Assets.xcassets/StreakBubble.imageset/Contents.json create mode 100644 kWordle/Assets.xcassets/StreakBubble.imageset/StreakBubble1x.png create mode 100644 kWordle/Assets.xcassets/StreakBubble.imageset/StreakBubble2x.png create mode 100644 kWordle/Assets.xcassets/StreakBubble.imageset/StreakBubble3x.png diff --git a/kWordle/Assets.xcassets/StreakBubble.imageset/Contents.json b/kWordle/Assets.xcassets/StreakBubble.imageset/Contents.json new file mode 100644 index 0000000..63c127e --- /dev/null +++ b/kWordle/Assets.xcassets/StreakBubble.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "StreakBubble1x.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "StreakBubble2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "StreakBubble3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/kWordle/Assets.xcassets/StreakBubble.imageset/StreakBubble1x.png b/kWordle/Assets.xcassets/StreakBubble.imageset/StreakBubble1x.png new file mode 100644 index 0000000000000000000000000000000000000000..886604ebeaf194c7776c424882848cebe0dfcb35 GIT binary patch literal 846 zcmV-U1F`&xP)FI3CvaM%$!QAh? zdlnMH_NUVy4dH|gM7T^yIOWop z{?F{H5s%A6gv&&P%S43BM1;#kgv&&P%Y=k0U3w0oH{x-bh;W&RaQ)$Lw@!SFQxH-# zggZqFgeHomOA_uFDG-{pc2ytxB*f7yy(i&*w-gFh?%lESHqghz?I6TZ2+GpU^)U; zqK!JxsK&%mZ(MX$Di9AKesn*0tqbKX+G79}Z0PP9)!1ME{f205;ra^ccz=4@@Y8Y$ z8$Q9`be9-L>FWFAIVfO*!-*~IJ(9I;Y@zG;2`lE{Yg)LI)LY@4M%`lPF8BfCdHAa5 z`F-z7o_B`+C|Du=mL!FK+mXhAyqg01w#W}hqeggk=@P-i>5-Eh;{^k@B@Gd72nxec zu)au=DtQ+Mo(XXKttGB`pp==_m{A YH$}=!%{yJBXaE2J07*qoM6N<$g44N#N&o-= literal 0 HcmV?d00001 diff --git a/kWordle/Assets.xcassets/StreakBubble.imageset/StreakBubble2x.png b/kWordle/Assets.xcassets/StreakBubble.imageset/StreakBubble2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4293535b85d130b6c5b43354d47f35bb99275a78 GIT binary patch literal 1711 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 literal 0 HcmV?d00001 diff --git a/kWordle/View/MainView.swift b/kWordle/View/MainView.swift index 900bc2e..35e5f4c 100644 --- a/kWordle/View/MainView.swift +++ b/kWordle/View/MainView.swift @@ -48,16 +48,41 @@ struct MainView: View { var mainView: some View { VStack(spacing: 0) { - TitleView() - .padding(.top, 35 * currentScreenRatio()) - .padding(.bottom, 8 * currentHeightRatio()) - HStack { - SettingButtonView(isSettingPresented: $isSettingPresented) - Spacer() - GameCountView + ZStack(alignment: .bottomTrailing) { + VStack { + TitleView() + .padding(.top, 35 * currentScreenRatio()) + .padding(.bottom, 8 * currentHeightRatio()) + HStack { + SettingButtonView(isSettingPresented: $isSettingPresented) + Spacer() + GameCountView + } + } + ZStack { + Image("StreakBubble") + .resizable() + .frame(width: 80, height: 55) + VStack { + HStack(spacing: 0) { + Text("1000") + .foregroundColor(.hBlack) + .font(.system(size: 14, weight: .medium)) + Text("번째") + .foregroundColor(.hBlack) + .font(.custom("EBSHMJESaeronSB", size: 14)) + } + Text("연승중") + .foregroundColor(.hBlack) + .font(.custom("EBSHMJESaeronSB", size: 14)) + } + .padding(.bottom, 6) + } + .padding(.trailing, 35) + .padding(.bottom, 25) } .padding(.horizontal, 20) - .padding(.vertical, 8) + .padding(.bottom, 8) AnswerBoardView() Spacer() if !mainViewModel.game.isGameFinished {