From 920e164214dd34780aff572500e8755a47603c0c Mon Sep 17 00:00:00 2001 From: parkikbum Date: Fri, 24 Dec 2021 21:23:08 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=E2=9E=95[ADD]:=20#7=20-=20=EC=83=81?= =?UTF-8?q?=EC=84=B8=EB=B3=B4=EA=B8=B0=20=EB=B7=B0=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Youtube_Clone.xcodeproj/project.pbxproj | 28 ++++++ .../icn_dismissBtn.imageset/Contents.json | 23 +++++ .../icn_dismissBtn.png | Bin 0 -> 220 bytes .../icn_dismissBtn@2x.png | Bin 0 -> 305 bytes .../icn_dismissBtn@3x.png | Bin 0 -> 410 bytes .../icn_expandBtn.imageset/Contents.json | 23 +++++ .../icn_expandBtn.imageset/icn_expandBtn.png | Bin 0 -> 228 bytes .../icn_expandBtn@2x.png | Bin 0 -> 317 bytes .../icn_expandBtn@3x.png | Bin 0 -> 397 bytes .../wesoptiOSPart.imageset/Contents.json | 23 +++++ .../wesoptiOSPart.imageset/wesoptiOSPart.png | Bin 0 -> 8770 bytes .../wesoptiOSPart@2x.png | Bin 0 -> 20085 bytes .../wesoptiOSPart@3x.png | Bin 0 -> 33666 bytes .../Storyboards/Detail/Detail.storyboard | 32 +++++++ .../Source/Models/HomeDataModel.swift | 8 ++ .../Source/VCs/Detail/DetailVC.swift | 88 ++++++++++++++++++ 16 files changed, 225 insertions(+) create mode 100644 Youtube_Clone/Youtube_Clone/Resource/Assets.xcassets/icn_dismissBtn.imageset/Contents.json create mode 100644 Youtube_Clone/Youtube_Clone/Resource/Assets.xcassets/icn_dismissBtn.imageset/icn_dismissBtn.png create mode 100644 Youtube_Clone/Youtube_Clone/Resource/Assets.xcassets/icn_dismissBtn.imageset/icn_dismissBtn@2x.png create mode 100644 Youtube_Clone/Youtube_Clone/Resource/Assets.xcassets/icn_dismissBtn.imageset/icn_dismissBtn@3x.png create mode 100644 Youtube_Clone/Youtube_Clone/Resource/Assets.xcassets/icn_expandBtn.imageset/Contents.json create mode 100644 Youtube_Clone/Youtube_Clone/Resource/Assets.xcassets/icn_expandBtn.imageset/icn_expandBtn.png create mode 100644 Youtube_Clone/Youtube_Clone/Resource/Assets.xcassets/icn_expandBtn.imageset/icn_expandBtn@2x.png create mode 100644 Youtube_Clone/Youtube_Clone/Resource/Assets.xcassets/icn_expandBtn.imageset/icn_expandBtn@3x.png create mode 100644 Youtube_Clone/Youtube_Clone/Resource/Assets.xcassets/wesoptiOSPart.imageset/Contents.json create mode 100644 Youtube_Clone/Youtube_Clone/Resource/Assets.xcassets/wesoptiOSPart.imageset/wesoptiOSPart.png create mode 100644 Youtube_Clone/Youtube_Clone/Resource/Assets.xcassets/wesoptiOSPart.imageset/wesoptiOSPart@2x.png create mode 100644 Youtube_Clone/Youtube_Clone/Resource/Assets.xcassets/wesoptiOSPart.imageset/wesoptiOSPart@3x.png create mode 100644 Youtube_Clone/Youtube_Clone/Resource/Storyboards/Detail/Detail.storyboard create mode 100644 Youtube_Clone/Youtube_Clone/Source/Models/HomeDataModel.swift create mode 100644 Youtube_Clone/Youtube_Clone/Source/VCs/Detail/DetailVC.swift diff --git a/Youtube_Clone/Youtube_Clone.xcodeproj/project.pbxproj b/Youtube_Clone/Youtube_Clone.xcodeproj/project.pbxproj index ca2a683..adc164a 100644 --- a/Youtube_Clone/Youtube_Clone.xcodeproj/project.pbxproj +++ b/Youtube_Clone/Youtube_Clone.xcodeproj/project.pbxproj @@ -34,6 +34,9 @@ 36A6022827100790002BBF40 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 36A6022627100790002BBF40 /* LaunchScreen.storyboard */; }; 36A60235271008C2002BBF40 /* Login.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 36A60234271008C2002BBF40 /* Login.storyboard */; }; 36A60237271008DE002BBF40 /* LoginVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36A60236271008DE002BBF40 /* LoginVC.swift */; }; + 36B69F862775DD7C00FEEAAE /* Detail.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 36B69F852775DD7C00FEEAAE /* Detail.storyboard */; }; + 36B69F892775DD9700FEEAAE /* DetailVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36B69F882775DD9700FEEAAE /* DetailVC.swift */; }; + 36B69F8B2775EBE400FEEAAE /* HomeDataModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36B69F8A2775EBE400FEEAAE /* HomeDataModel.swift */; }; 36F8F6C72721464E00092338 /* TabbarVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36F8F6C62721464E00092338 /* TabbarVC.swift */; }; 36F8F6CB272146DD00092338 /* HomeVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36F8F6CA272146DD00092338 /* HomeVC.swift */; }; 36F8F6CF2721470D00092338 /* Home.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 36F8F6CE2721470D00092338 /* Home.storyboard */; }; @@ -79,6 +82,9 @@ 36A6022927100790002BBF40 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 36A60234271008C2002BBF40 /* Login.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Login.storyboard; sourceTree = ""; }; 36A60236271008DE002BBF40 /* LoginVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginVC.swift; sourceTree = ""; }; + 36B69F852775DD7C00FEEAAE /* Detail.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Detail.storyboard; sourceTree = ""; }; + 36B69F882775DD9700FEEAAE /* DetailVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailVC.swift; sourceTree = ""; }; + 36B69F8A2775EBE400FEEAAE /* HomeDataModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeDataModel.swift; sourceTree = ""; }; 36F8F6C62721464E00092338 /* TabbarVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabbarVC.swift; sourceTree = ""; }; 36F8F6CA272146DD00092338 /* HomeVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeVC.swift; sourceTree = ""; }; 36F8F6CE2721470D00092338 /* Home.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Home.storyboard; sourceTree = ""; }; @@ -186,6 +192,7 @@ isa = PBXGroup; children = ( 362F42FE273CF5BA0033E580 /* LoginDataModel.swift */, + 36B69F8A2775EBE400FEEAAE /* HomeDataModel.swift */, ); path = Models; sourceTree = ""; @@ -254,6 +261,7 @@ 36A60232271007FE002BBF40 /* VCs */ = { isa = PBXGroup; children = ( + 36B69F872775DD8900FEEAAE /* Detail */, 36F8F6E52722DDD700092338 /* Saves */, 36F8F6E42722DDCF00092338 /* Subscibe */, 36F8F6E32722DDCA00092338 /* Adds */, @@ -269,6 +277,7 @@ 36A6023327100812002BBF40 /* Storyboards */ = { isa = PBXGroup; children = ( + 36B69F842775DD6E00FEEAAE /* Detail */, 36F8F6DC2722DD8C00092338 /* Saves */, 36F8F6D92722DD7000092338 /* Subscribe */, 36F8F6D62722DD6000092338 /* Adds */, @@ -282,6 +291,22 @@ path = Storyboards; sourceTree = ""; }; + 36B69F842775DD6E00FEEAAE /* Detail */ = { + isa = PBXGroup; + children = ( + 36B69F852775DD7C00FEEAAE /* Detail.storyboard */, + ); + path = Detail; + sourceTree = ""; + }; + 36B69F872775DD8900FEEAAE /* Detail */ = { + isa = PBXGroup; + children = ( + 36B69F882775DD9700FEEAAE /* DetailVC.swift */, + ); + path = Detail; + sourceTree = ""; + }; 36F8F6C82721469C00092338 /* Home */ = { isa = PBXGroup; children = ( @@ -477,6 +502,7 @@ 36F8F6D12721482100092338 /* Tabbar.storyboard in Resources */, 36A602232710078F002BBF40 /* Main.storyboard in Resources */, 366D23F42710627600652491 /* Register.storyboard in Resources */, + 36B69F862775DD7C00FEEAAE /* Detail.storyboard in Resources */, 36631C11272C04F2001BEC5B /* VideoTVC.xib in Resources */, 36F8F6DB2722DD7E00092338 /* Subscribe.storyboard in Resources */, 366D23F827106D5300652491 /* CompleteLogin.storyboard in Resources */, @@ -538,6 +564,7 @@ 36631C01272BDF31001BEC5B /* UITableView++.swift in Sources */, 36631C04272BF533001BEC5B /* ShortsTVC.swift in Sources */, 36F8F6E72722DDE600092338 /* AddsVC.swift in Sources */, + 36B69F892775DD9700FEEAAE /* DetailVC.swift in Sources */, 366D23FA27106D6200652491 /* CompleteLoginVC.swift in Sources */, 362F4305273D0AC70033E580 /* RegisterService.swift in Sources */, 36F8F6C72721464E00092338 /* TabbarVC.swift in Sources */, @@ -552,6 +579,7 @@ 36F8F6E02722DDB100092338 /* ShortsVC.swift in Sources */, 362F4303273CFD530033E580 /* UIViewController++.swift in Sources */, 362F42FD273CF40E0033E580 /* Constants.swift in Sources */, + 36B69F8B2775EBE400FEEAAE /* HomeDataModel.swift in Sources */, 362F4301273CF9320033E580 /* LoginService.swift in Sources */, 366D23F62710628800652491 /* RegisterVC.swift in Sources */, 36F8F6E92722DDF800092338 /* SubscribeVC.swift in Sources */, diff --git a/Youtube_Clone/Youtube_Clone/Resource/Assets.xcassets/icn_dismissBtn.imageset/Contents.json b/Youtube_Clone/Youtube_Clone/Resource/Assets.xcassets/icn_dismissBtn.imageset/Contents.json new file mode 100644 index 0000000..51a2ece --- /dev/null +++ b/Youtube_Clone/Youtube_Clone/Resource/Assets.xcassets/icn_dismissBtn.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "icn_dismissBtn.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "icn_dismissBtn@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "icn_dismissBtn@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Youtube_Clone/Youtube_Clone/Resource/Assets.xcassets/icn_dismissBtn.imageset/icn_dismissBtn.png b/Youtube_Clone/Youtube_Clone/Resource/Assets.xcassets/icn_dismissBtn.imageset/icn_dismissBtn.png new file mode 100644 index 0000000000000000000000000000000000000000..4cc4aead039f35cafbf37efabdada641f6e78f3b GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?3oVGw3ym^DWND9BhG ztQSZEStLj^PHns<^?HE zj+2}^b&H!${Jp7eEt>DSlpjqgpDL&|agW;ymnrTmz@}`N$9zljqwv}pbJl_Qp00i_ I>zopr0Am_W4FCWD literal 0 HcmV?d00001 diff --git a/Youtube_Clone/Youtube_Clone/Resource/Assets.xcassets/icn_dismissBtn.imageset/icn_dismissBtn@2x.png b/Youtube_Clone/Youtube_Clone/Resource/Assets.xcassets/icn_dismissBtn.imageset/icn_dismissBtn@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b955ff95555da377be92023047db2f2dd133fc35 GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGooCO|{#S9E$svykh8Km+7D9BhG zbtTao$zkC1j)D<%8bNfC#JH7wZgLOttAIn#DB>eF-7VL>n@n?A~ zep~3^58rDp635h29SiOtDnm{r-UW|VjXnD literal 0 HcmV?d00001 diff --git a/Youtube_Clone/Youtube_Clone/Resource/Assets.xcassets/icn_dismissBtn.imageset/icn_dismissBtn@3x.png b/Youtube_Clone/Youtube_Clone/Resource/Assets.xcassets/icn_dismissBtn.imageset/icn_dismissBtn@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..40168c931090dee9a4722d7bdbd67295b0c7e23a GIT binary patch literal 410 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q4M;wBd$a>caTa()7Bes?T7WR4>omgzpde#$ zkh>GZx^prwfgF}}M_)$E)e-c@Na{8Vwjv*C{Z?C+~YIYE4yO^23r}+6cO}40m z{if^k?i4HhU&OPA-wmh}FObQUXj^|=U+Us5TOEnxRl91oTzi*zFlEhY_w2WFVrP0v zZ)U8$d$?)pMnCzrTdN~B6t21Kmi>0#ExX5mYeoK;XZM-yv*wo5+&MR@uI==~GYni1pGLBCb?0l}auEWE|yg1F}(ax2|N4x``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eBex;|2V@L(#+esHW8w_|{f?qP^EmD5*q?G0E z5k{`6R*@wlldkEj^7DCJy7yaiVxq+V#FVP4=fb@ zv;_4F5GxdT!#@nnQ}-C@ UK9X2l4|D{Br>mdKI;Vst0Bej)R{#J2 literal 0 HcmV?d00001 diff --git a/Youtube_Clone/Youtube_Clone/Resource/Assets.xcassets/icn_expandBtn.imageset/icn_expandBtn@2x.png b/Youtube_Clone/Youtube_Clone/Resource/Assets.xcassets/icn_expandBtn.imageset/icn_expandBtn@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..df491be9321097004a4f59f9713b28dec52408a4 GIT binary patch literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^CLqkg1|*MGNWTVBoCO|{#S9E$svykh8Km+7D9BhG zpg&E5ax*{4sBEw)u}JMVO6$@}W*O3$Zti*Nh6b5^kb6=#Btl~Z4P3NY*i8+p&M3>C}DQ~&O3_ArU zE8Ofb>K5Fr5c#Vx>ew8oz|c_J(ieAP8=dronL!R?c*5%Qw)w?}ww{w9o~Nsy%Q~lo FCII-oo1K-6l5$8 za(7}_cTVOdki(Mh=JyYvq0&duWG z%YMJy5qy?kROW`n?K{tuo;NE+T4%(rCBOXDiqL zKQ-Sn+HBIic~-oK6F%F-uVsAy_4WwSg)n_9qShH<>OY5 ze(c(<*4{SR|FLV2T6_ECTNRZVcB0c>3HipnFTHnix#rXMwcm^GF7li%{5_!X)3uUb zwb;Wa+bZrZ_WWM($#IXsMHLr|l^x=0vsyUSTPqeWYF!$Cd%3;Z5)rTY(k|DNx*k1P>A< zKu8EMeDgB@^_!Pjv;Oli5BILS_gUwhyZ1h4d(3;ScO?JN{)2;qL!zqkMi&PM7kvLc zLqu@@ww1H`ci@qmiisx<4)L>pA6%TQ@6`85Tu!y3PQ~k2ab8I6?#u-{6xJx+_TcqbLMoFasR5BadRf z+vUa(>r4o-J7{P1VEF@Pd9OB?8{QO1zg$@n5jh^Upii|`XW82Whu7eezy0(G0 zfwvLZKpQo7w`(7Ts6_xeF`%~IP6J*81A~!=I5>)r$Z>Fp2w_ifn3=<+a6&`L5I8sw z6x;D|h=~3>kf4E^G@wgCwrj6MJq#D;M>dhoZ`v8uYCv7xARbOAxHruvspa>iB_Yo5 zZ*HopBRMIbY#?cguT;I}Ol&z(7kwloB&D$G{@@82RQ~J}9I}Mi!5nqU6Cxj+(8DuU zs6<(4p0NGX&kQ)skmAZpuFSwKL!)=~csSNkuDsx!7W_J;e}VX8*tiKEWB(JJ1XCK6 zCwKraC)tMPU(lv^9*T>Te+*j^{BI@ve=+l)L)*(+y*N%fH9TUq4b+-c{o;9`X5S}$ za`-#CCqXoQAc`-4(_W61!iLgF^&&SVEoGWJZ5#)XyfQ~KGrgdWkeyJS=G-1z?ts|M zy6r*gQ`p66=j(6FE{t!}=#_Ikz=6;?dze-&z1FXS)!C{Bt3Ehdf7lt-naCPu@1~=S zy(J`+D`S+{v1hEFUVzSKozR@@w$U##fJ!U6>n@NjKvAD7L52_dF8+V6{5)n4(K=4z zD_pHwUX9*^kU%87ikH#uen{450w{-f(D|{aPVS?%DXMz9qY26E?7XbL&J^AifAx>d zaY|kmV?gjcq1Rw1`z9*HSjxnt!q(MSts`Xf^)5H)3n=(3Fp&C|x{qcIv-jG+23>S@ zBLT`*MupsR$t>UYdgR4}H@d(>edc-ud2jmUU~1C=-L1PXvsx}+dw7ogovv6t>ja9* zYEA^A&9Jw3alP_rLFDPOCNXO3%CVyG2XD{YE};f)G*ZZ5!`Izlu;7JE~mCpMB1J$;iU+;?P5Vj$bqymRg^Dm_xm zcdKoQyE0`wd3hHBCx_oqn+MXv=@1&cx7m@CYtOKs+)z5o#o<}T+_smPK5mpYN1a6t0`U`O zya(r{TU7&uEOaX(=aNr}Tei-Dnl<0`rH6YputQ>OdW3l@LWZ&_QwLX6p6E{#8-w%l zJxP%i7iC_1u%By97E?K+(yxfYT5AcXuzAhi<@3({0S_A*qyWs9%mf&Nk=}#ENB#C! zx0`9S!5(UP)3^s(wU>3xdUuX4?tc6rDxFV2k+Sqe3XF|kz?QZC>8NUnLtyoS2TC0y zo<_b6q&YE{!)S^K^M9l(Wn#P`8HR5TYTF=ZmR8aP_<9rbs+^sCtDskzdj|}6(3-d> zMGa0Xwbq+%Kz`eroM$1fT{7&9mzcoX>!Fp=>rWwM2wA`{KoA!4vyYk{befJ>d817O zh@~fe*<(Er)ezam5nI!Cvl3;mZRDs{m+h(RdeGET#%mGwV=&;lBP4ol_tVF7#I3e5 z_vO#4-S?)({eaSy(kV(;O{Ck5*kh4jVS6PxRk~aZtjJM>2*sm_J*H>3^P(S`VBcO( zry7crYRlHW9lAJ9&*Rf@%ypIi2$-_C5_ZEPvsBLjK6#PuF&*+ec_mEo7gdE;SqlU&q|jLT8xyyu^k!r6J=Pj9nI~?-XM8y zK8>^*jpX2+nx~r;oHH0?Yw-7uu+Mn5aL&Kd7K49FHF_iUc3#Iu;ViAleevX}j%V2o z!2wlvt{wmucpPV}4&}$Rqixshn~ch}nby`#9CsyqsgO{umR}#pISs#|i!qCPSGkd9 zX|MnzpW8-f&X%{!o6}v;DgV2bo%Fr6L(g2HTZe6aIiCl&3hmc+g9U8c>Xy~^vQ1VU z_S9y&0xP!t9c2dz@P-H}x%|9u8MGmJBsH2&ZF5k`?TgKkux~{G=Ztw1nnBDeJ->+W zqL6QiU))sV^zhj3@X}cTc#ZvhtY~OB3Z~FF`o3z%_sCy;*@aaFvD|3P8F13+*+>S1 zB=ilrn29rr2;U#Hw| z!3cD-cDv0-J(?a?TDy|vKLVr*$aY=m4yUKOcNiZZ#Gf`Me5+F$a@$3AblPN}NsI%K z8B?RXbZl~$-{o2FjW2rb{NDb_Mg;$#*xTd^1 z{ecDYuTnOczF;S9ym&BAtT&4wjq1Ij%2N@9eOYAOe$3nHg|jN2Q+7qbQb4)IpsdYm zKNAs(r_)Q9cg5$_uCkV>Nn^6ED6z&ZaR$htL50Nx0XnvsOR8Ec!(D2m(n{m%3X>FX zqcz|YQKF{08O18m)|nBWJWJPUjhEeDxFrjuviRyf4OQyOZUBldY* zx>Y*Ny91o#v^1~m-3R>Uh9V!3Ay)hH;(Yy&-X4(Ms0#G+$*m2MUY>bPT~ytzWX^R} z31^!}92>n*bZ+mh7Z-ohEWdY|HeDGRsomUz)XwNa9p0*Hi}BxpgoA=wY--D{O=Y$~ zcxjG!ic6s7b6&IAJ@L*$0pLYI@w(7!-oVmAVUPE(WlnAyypCoP&wB{vtm&#nyZRS+ z=ep=WQ>2X*?O7bSQFZ-#rAD_LtqN1D1hvPEfzG%i75B*yCMU?_z_?!T4FSsVZiA!} zQ@eLhXH%l!wd!ntN#gsC;i)ZQqkF%y$1T>}MVU;cpWi%w#<))OZT5-+x}5WF_O|M2wIo7LNn(cd(Ffow+wENV`p0K$vY%_@Gj#uFYis2t4Z2 zu5N)m+ko(o4w!1$Vh@G>q58`}ylNX@d`rJhC=?#>BT`?#eonK1_Jc%e%B)mg2HIH? zb?Y~?gjf~YY_EH4*>9GghWq*HPD#>}i#ndJwsB6?gB+^@F`otbYd0gs*Oo3ZJA!lm zcT4pSkgz0CQtX-uk*{O>urH)XyvNO!P=^WF`YA22JC&K52$g@z4+19^yi;(g;N&dD z!1e6r^uB(GsydRBUsk~vXOb4*QgKy>>SX})j7Ynm)YaBA8ENoCwjgzPD*CjXYQ7pI zD4rH5TEW$-9Ys-o&^k{-?5Ho?(mc7Mp7!h^A&gO&@kKWu4P=%qaSu4msNKYdD3u`L z>!bb&Y+u2hAUy6@B=jdOFQwRF*@bNkF02z0_(6nh<*0~Nb<5^|>w8YT{Q-msMgSly zgMwQ~a?X72o!hW)UjD~5_!Ua+gmEG0PBay>n#9*sfXiK7MYH8Wdb3Z|V4Wx@U4>-} zslWLPYe|z4ICJHuf}vx(;|g2O4ttg@jIj~j`LStdJiV-8*-Aqyf1ee)NYH%?a-H6h zxhDD?;YLck=4=Q+bgb<1{dux5mKpp!=X!yuyk)SouR)OMmqXq@Gso^xxGJAH;e4me z%I8)??l7XXeO%p)PE^Z?ABklj&*l>KWlO!?Q@ zrgt~T8?~1SoU2xA`)PWQJ#CDwz$)pv0$A$L)lAIeXrWB~M>aI7QaGAhJ;Q2}NP0uD zGs*1?W%o00;C0|Jur-_(c!IaEc)t^^V~6@r{_0U@IDBt)D8)RVi#g|DVtlktqWSU60RltFY{Mjpeh#-Gq&H1756ch zb`~$XqOd%i>#G{ans6&ZWMyJBkYd3U_=aR(h2u^9xODaqqru0J`q^6Rml5{k0eOEJ z_<7WQ=f7-NR$8|?Wxw|nmI>?!PZ1f$6c0S0J*xs`FxKoD{oEN`o>k^vbfh%(eDvIJ za&mE6Y0Mc8Dt|H+mKN{>AhnzV?1e<2?VOL@%ZGu-bp8;+#+kZf;N{4~$K9As3~E%P z2`IOTbRmCSST67Gci{||?AKXA>4gB$>7Uw9E6sJ;`@vm;j_Im7?w0~tK`^2g?WPs{ z9w)UIbv5>-nIZo1SgXBDJ8=E1q$Zy!i>)@3vd}oKllUF;;%0779U;8@Rsc05x@fg2!Bpf3=br8Lo32lcYQei+*B6-jdoB8($gsq%9$R(qn@C ze(SDde999ZdKb*)>qE$lGTfBUVDK!zGzlNeYx{mh1`9f>^} zY7@bzE;yxN^Zxk>xT9A6K9JO;264C-JtOrg3r1iZrFk50n6252+aWi`rajpa{-k}S zfp5C_{FAahGI5z89|C3l7lgf#crDdKa&9ssB91Ei6OK3CU(02+1~nxt{z**aKT*9% z#88Rp+-yt);K@>su9vp1gWAzfw6g87pDiBysQ*}s>`|{Tg@^|?#-<;ZLTvDgy2m#? z(u0V=CG-@Au5%||UCJ-Fc3mI*#y&8AUBfyafH;YZ3(SbXzAc1tt8SqAp3{mtERCUb z=^o<4R-^VombiCkyFH*6U2baIrGW}Dktxc19dzvY^Pj;ao{kHSE$*OU*A-7930FIf zVI2BZ?zAC~@n)VPY`OQB8t>_v_csSrHet`_0Go-cBwk)8o&&8D=Yfi}vuHv)T zLmgJ-$9m#t`Iqt^jvXT74IJw|KE{YQcPCJ;3TM`0HU*cOiy{J(rxf(FJG=5U=tu^y zmoMfDUX`!}S?!-@w9f8+-@ft@9fJa6|2bzIrD^?}S7FnOia-n*yei zEy4V&6Wk>sErQTcbv_dgN4W zUhHw6H57C54W`wDyNmC**y}qjp@uha|8(|Q(!H=Q^$zwU6AdYmkgdp>xq7P6>Z=tG zu%FohhAZ9GqUcE?H1Ki7itzp6r6NMn>-70DC>INu%Gt!urAs$aVnYiBc-wF3D+5k= zLmrr=eRwd-c9{H~CF@q$j*ePSn>xz=WgCeGhu;qgYCQvoyKup!dJlWxm$YOk<7-q= zddnRrgI9NCvGtu516+4hfYWKgvU=O>QbM)+RWtY@0O9u#maBv?Yc`aaglCNaV%U-k zMTiq{Bgg?K$(|L60Uw&THE7ru=QiT_&+Jwm6SLvt20iy|EmpT})&;C0PI@cEP zHC1GwSz&Nw!0#R&E7~;tz+WFJPp}-^12Uj{e*Q5fHsS|OU=AK=W?=QQv74){Vy2cOQY6w z*)*G!O%l%94@(yt+oNNL`JdXprYNi_wD0D3nO!AFc3FAdgv4Kz5Xj}%hf-pFxiqhD zEFGXB8B(^hM?MbXBvxEp1<< zRkddqL6zoT%&*!ujX-))UjKO#4FVe);M426@KmeO=4WBp)%pe$@%5qyX+V2vEZdkB z#a}Tpgv4PhK1nqJQvpPqA=QuAjQ9$FJ~(-wF_<+j6wDPPj_-sc0xk<{)1srFPtG_G zKG-5%twiik0FHdpkr!cGcQlo`yQVMB(?;%NK62)gXo)phIRVn4k97w|BphOWj&Bi*aF?L$G{US|u z^RWTYqBU{PoHf%WFJNuYxXLu?h5p?*-4@-AZ&*5#^VJbXFoEi?y@>YtPfM>OJ#{j^q?A_FB^QV$xY1w5cwPUtZ zQQd${)Yng}Jq@&7e`FmiqFn-#ox_1s;$(<7eXX(SKxSJ8rT6y~?0o6tDSp0;sw^uE zxbXnE$|TXA7)|6a;ijq%IXzNpjI{erf9b-S=*9XF%!Qj%%##d{1HEMisCgLaWKliz z?EJ}3dih}Adb9oDNcnu;z%{w<9F6iCu{uIVbcbqlk(x@N{QQyAY$EGIF8#<*{-O?} z8&U%bDyjIH3L6AP`6pB0P(5yHdfXYP#)$G#E)35mb&W!+ci={kzx39h15L!0y z$F;hIFXDPKpsRHfABiY=CwtyNUo>484fnH(Obh6hACnQ1T}gko&fIpi8S_mFq5F+H03+nh)XMCqFA_O!;T;*^LIJsyzJZt?N@ zD>A`Th+gZ9)sn0PbjceK7#o_tzI_8|31Yvo+NO>A^h#~14cdCwrM*#O>p@dyA-U3t zfTuGh^f*(aKaH^)RvV;+m~GOvCiJ>%=x~HiP&^15b7S1Z720&2`1`I4b^Sh!loK~( zc*gSxBIHv-J)hT3oX@iAEyRw{=JFAW#?6PGrj9X&@klt?B{_ZAu*nooOD2l#dvvgEOF)kB z!?U4bn!RL_Z<>&Z3gqrB{SsH(38JwH{8((LE$4bp?O$BbfA*bmy*n1B`}sBW&VNk6 z-*+ftX7QPboNb`Cm9uQH4=2s%4)9BN-HZ2){DkCwh~3(}g8dR6t8P0$?^mX1)Y*&s zOZ4tO(OP-5miIB1uI}a)O~|XSEOl6qZ={>auV|%wqX)&$`P*3ZP4|z;TNAtX+I3Rg z5)6FSIK=0sGzs;RAFHR4yc_7=tMMVV;I*fFNWO)3Bsn;ry_45l3^KcQA{)73Ju2(w83fhISgR3(GV$ysa z;fbprsF`QFquBPhwSP&={VO2hfB*Ff!60}|zw{F@W%Ss)rHVm+Zza9Dj91%adg{65 zs2`@4yuNA;5qVpF5~?O_IYNBOkHE4_N%P(Yh4Or{1fS&FuQf^I0-rz8QQD+>MB3)# zRr=RMEWG1vp7*?_#sxB>n(K(Mma1)aDOTp5%MU2J3dd+_4|anJ-gf!Ib+E_B8mJ4otf`K^28f9pNTj@|}^5!(m0iBCj@~FUsU*_Yr zu-r2r_|B2ApKnd)X`{2qv&A%h>2zaV63_HqB?|x+?XdgR6`q$oU;nhUO+)2o#fXMb zUpc}Jm0aC&cvb@&2NX*$gq)n^RW#V-ZJM|BHiw(tOlr^?zb`+^DPCH7qNBFLHUcj+ z7d?hurXPK3ek%p91@B0VtGk*EDYYL2e0&k@3YDIN{(EC!2&tRu;Sburs?ISD=B^G> z@=a!b;i&?xoxO#pKNLC-Ps`w^5WXUo64p05nSTg%dLA}F+~(4PDvt*tY}FKlVK;+nwFNok?7QGuy%Cuj$eOi%^t@~G(RutlEgTi*IgTwBl zQC)v{XHM5%$Sp>!Gia0obLl>u{0C3Aw5Ni{9#>@vG_u3bDytQlFS;s5(6zFO`D0h( z9kW8~6R6h47xZ29cujSL>cL$<34b4p+7|j}9zAQ~WzkE?MQ`&#x%-nyMFeK5S#HX? z#hmJL@p6nVx*ZpAILrLiI6yg~XEhTkg&M4w|_2@j?CF!IQE-%B^YMfM|0*k8dCW95X&Bi6rUWUgz_{ z_FoG^MB;1F?6Ya4XRW!7=#bN<=MT{em6esFo52A%IOc@c#{Z9ssQ>pB=@$r-GBIZO|bsT}(Q!tF;X0Mh5blKj&y0tRef$+HwpWRh)Dh~FuTU7IkAKER;_d^7{ zVcNwchYaBvA{pu6!7P6Oa?*8q+r(d4Kx1p52il~|nO7UDW z3uV=eAqG=5xSb`TS=%wZ*lB|>02dqX7A5O`DnrMiBE)7ejVDK~3U5D-V9V-rBE{Vj zO0l``69{)B#33UaV8D@=FYmxJ{%$Yvnwt)=T-a=V5&YnUc!1%@##B>fDp2%PNS_?B z&i=no8VqS>t-56YKp<|1JzO-|C1D9=W`V-wmXc-(Q|{+E{(cE%vEzW;SO5P@q5r*S zlx%;9a literal 0 HcmV?d00001 diff --git a/Youtube_Clone/Youtube_Clone/Resource/Assets.xcassets/wesoptiOSPart.imageset/wesoptiOSPart@2x.png b/Youtube_Clone/Youtube_Clone/Resource/Assets.xcassets/wesoptiOSPart.imageset/wesoptiOSPart@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d11b05510e6e26eae38f2adab9b5513736693e41 GIT binary patch literal 20085 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 literal 0 HcmV?d00001 diff --git a/Youtube_Clone/Youtube_Clone/Resource/Assets.xcassets/wesoptiOSPart.imageset/wesoptiOSPart@3x.png b/Youtube_Clone/Youtube_Clone/Resource/Assets.xcassets/wesoptiOSPart.imageset/wesoptiOSPart@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..15c3784df6812c64ac4ac7fc8b9a173419ec777b GIT binary patch literal 33666 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 literal 0 HcmV?d00001 diff --git a/Youtube_Clone/Youtube_Clone/Resource/Storyboards/Detail/Detail.storyboard b/Youtube_Clone/Youtube_Clone/Resource/Storyboards/Detail/Detail.storyboard new file mode 100644 index 0000000..2c6b11a --- /dev/null +++ b/Youtube_Clone/Youtube_Clone/Resource/Storyboards/Detail/Detail.storyboard @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Youtube_Clone/Youtube_Clone/Source/Models/HomeDataModel.swift b/Youtube_Clone/Youtube_Clone/Source/Models/HomeDataModel.swift new file mode 100644 index 0000000..04f667c --- /dev/null +++ b/Youtube_Clone/Youtube_Clone/Source/Models/HomeDataModel.swift @@ -0,0 +1,8 @@ +// +// HomeDataModel.swift +// Youtube_Clone +// +// Created by 박익범 on 2021/12/24. +// + +import Foundation diff --git a/Youtube_Clone/Youtube_Clone/Source/VCs/Detail/DetailVC.swift b/Youtube_Clone/Youtube_Clone/Source/VCs/Detail/DetailVC.swift new file mode 100644 index 0000000..58f657b --- /dev/null +++ b/Youtube_Clone/Youtube_Clone/Source/VCs/Detail/DetailVC.swift @@ -0,0 +1,88 @@ +// +// DetailVC.swift +// Youtube_Clone +// +// Created by 박익범 on 2021/12/24. +// + +import UIKit +import SnapKit +import Then + +class DetailVC: UIViewController { + + private let imageView = UIImageView().then{ + $0.image = UIImage(named: "wesoptAndroidpart") + } + + private let titleLabel = UILabel().then{ + $0.font = UIFont.systemFont(ofSize: 15, weight: .regular) + $0.textColor = UIColor.black + $0.lineBreakMode = .byCharWrapping + $0.numberOfLines = 2 + } + + private let detailLabel = UILabel().then{ + $0.font = UIFont.systemFont(ofSize: 13, weight: .regular) + $0.textColor = UIColor.systemGray + } + private let backButton = UIButton().then{ + $0.setBackgroundImage(UIImage(named: "icn_dismissBtn"), for: .normal) + $0.addTarget(self, action: #selector(dismissButtonClicked(_:)), for: .touchUpInside) + } + private let expandButton = UIButton().then{ + $0.setBackgroundImage(UIImage(named: "icn_expandBtn"), for: .normal) + } + + + func setData(title: String, detail: String, image: String){ + titleLabel.text = title + detailLabel.text = detail + imageView.image = UIImage(named: image) + } + + + func setLayout(){ + view.addsubViews([imageView, titleLabel, detailLabel, backButton, expandButton]) + + imageView.snp.makeConstraints{ + $0.leading.trailing.equalToSuperview().offset(0) + $0.top.equalToSuperview().offset(50) + $0.height.equalTo(212) + } + backButton.snp.makeConstraints{ + $0.leading.equalToSuperview().offset(0) + $0.top.equalToSuperview().offset(50) + $0.height.width.equalTo(48) + } + titleLabel.snp.makeConstraints{ + $0.top.equalTo(imageView.snp.bottom).offset(12) + $0.leading.equalToSuperview().offset(12) + $0.width.equalTo(270) + } + expandButton.snp.makeConstraints{ + $0.top.equalTo(imageView.snp.bottom).offset(12) + $0.trailing.equalToSuperview().offset(-7) + $0.width.height.equalTo(26) + } + detailLabel.snp.makeConstraints{ + $0.top.equalTo(titleLabel.snp.bottom).offset(4) + $0.leading.equalToSuperview().offset(12) + $0.width.equalTo(270) + } + } + + @objc private func dismissButtonClicked(_ sender: UIButton){ + self.dismiss(animated: true, completion: nil) + } + + + override func viewDidLoad() { + super.viewDidLoad() + setLayout() + } + + + + +} From 92d18d68c6ebd036e69dce1af8af080b7caa5799 Mon Sep 17 00:00:00 2001 From: parkikbum Date: Fri, 24 Dec 2021 21:23:33 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=E2=9C=A8[FEAT]:=20#7=20=ED=99=88=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/Models/HomeDataModel.swift | 6 +++ .../Youtube_Clone/Source/TVCs/VideoTVC.swift | 38 +++++++++++++++++-- .../Source/VCs/Home/HomeVC.swift | 31 ++++++++++++++- 3 files changed, 70 insertions(+), 5 deletions(-) diff --git a/Youtube_Clone/Youtube_Clone/Source/Models/HomeDataModel.swift b/Youtube_Clone/Youtube_Clone/Source/Models/HomeDataModel.swift index 04f667c..90ee1f6 100644 --- a/Youtube_Clone/Youtube_Clone/Source/Models/HomeDataModel.swift +++ b/Youtube_Clone/Youtube_Clone/Source/Models/HomeDataModel.swift @@ -6,3 +6,9 @@ // import Foundation + +struct homeDataModel{ + var titleText: String + var detailText: String + var imageName: String +} diff --git a/Youtube_Clone/Youtube_Clone/Source/TVCs/VideoTVC.swift b/Youtube_Clone/Youtube_Clone/Source/TVCs/VideoTVC.swift index 6f56a06..aecb441 100644 --- a/Youtube_Clone/Youtube_Clone/Source/TVCs/VideoTVC.swift +++ b/Youtube_Clone/Youtube_Clone/Source/TVCs/VideoTVC.swift @@ -9,8 +9,19 @@ import UIKit import SnapKit import Then +protocol isImageViewClickedDelegate{ + func isImageViewClicked(title: String, detail: String, image: String) +} + + class VideoTVC: UITableViewCell { + var delegate: isImageViewClickedDelegate? + var title: String = "" + var subText: String = "" + var imageName: String = "" + + private let videoImageView = UIImageView().then{ $0.image = UIImage(named: "wesoptAndroidpart") } @@ -21,6 +32,8 @@ class VideoTVC: UITableViewCell { private let nameLabel = UILabel().then{ $0.text = "ㅇㅇ" $0.font = UIFont.systemFont(ofSize: 15) + $0.numberOfLines = 2 + $0.lineBreakMode = .byCharWrapping $0.textColor = UIColor.black } private let subLabel = UILabel().then{ @@ -32,6 +45,22 @@ class VideoTVC: UITableViewCell { $0.setBackgroundImage(UIImage(named: "moreMenuIcon"), for: .normal) } + func setData(titleText: String, detailText: String, image: String){ + nameLabel.text = titleText + title = titleText + subLabel.text = detailText + subText = detailText + videoImageView.image = UIImage(named: image) + imageName = image + } + + + @objc private func imageViewClicked(_ sender: UIImageView){ + print("눌림") + delegate?.isImageViewClicked(title: title, detail: subText, image: imageName) + } + + func setLayout(){ contentView.addsubViews([videoImageView, profileImageView,nameLabel,subLabel,moreButton]) @@ -53,10 +82,10 @@ class VideoTVC: UITableViewCell { $0.width.height.equalTo(26) } nameLabel.snp.makeConstraints{ - $0.top.equalTo(videoImageView.snp.bottom).offset(12) + $0.top.equalTo(profileImageView.snp.top).offset(0) $0.leading.equalTo(profileImageView.snp.trailing).offset(12) $0.trailing.equalTo(moreButton.snp.leading).offset(-19) - $0.height.equalTo(35) + $0.height.equalTo(50) } subLabel.snp.makeConstraints{ $0.top.equalTo(nameLabel.snp.bottom).offset(4) @@ -70,13 +99,16 @@ class VideoTVC: UITableViewCell { override func awakeFromNib() { super.awakeFromNib() + self.selectionStyle = .none + let tapGesture = UITapGestureRecognizer(target: self, action: #selector(imageViewClicked(_:))) + videoImageView.isUserInteractionEnabled = true + videoImageView.addGestureRecognizer(tapGesture) setLayout() // Initialization code } override func setSelected(_ selected: Bool, animated: Bool) { super.setSelected(selected, animated: animated) - // Configure the view for the selected state } diff --git a/Youtube_Clone/Youtube_Clone/Source/VCs/Home/HomeVC.swift b/Youtube_Clone/Youtube_Clone/Source/VCs/Home/HomeVC.swift index c1c4bb0..0cb9c63 100644 --- a/Youtube_Clone/Youtube_Clone/Source/VCs/Home/HomeVC.swift +++ b/Youtube_Clone/Youtube_Clone/Source/VCs/Home/HomeVC.swift @@ -11,6 +11,10 @@ import Then class HomeVC: UIViewController { + var homeDataList: [homeDataModel] = [] + var selectTitle: String = "" + var selectSub: String = "" + private let tableView = UITableView().then{ $0.backgroundColor = UIColor.white $0.separatorStyle = .none @@ -41,15 +45,24 @@ class HomeVC: UIViewController { //MARK: ViewDidLoad override func viewDidLoad() { super.viewDidLoad() + dataInit() navigationController?.isNavigationBarHidden = true setHeaderViewLayout() tableViewLayout() } + func dataInit(){ + homeDataList.append(contentsOf: [ + homeDataModel(titleText: "1차 iOS 세미나 : iOS 컴포넌트 이해, Xcode 기본 사용법, View 화면전환", detailText: "WE SOPT ・조회수 100만회 ・ 3주 전", imageName: "wesoptiOSPart"), + homeDataModel(titleText: "2차 iOS 세미나 : AutoLayout,StackView,TabBarController", detailText: "WE SOPT ・조회수 100만회 ・ 3주 전", imageName: "wesoptiOSPart"), + homeDataModel(titleText: "3차 iOS 세미나 : ScrollView, Delegate Pattern, TableView, CollectionView", detailText: "WE SOPT ・조회수 100만회 ・ 3주 전", imageName: "wesoptDesignPart"), + homeDataModel(titleText: "4차 iOS 세미나 : Cocoapods & Networking, REST API", detailText: "WE SOPT ・조회수 100만회 ・ 3주 전", imageName: "wesoptServerPart"), + homeDataModel(titleText: "7차 iOS 세미나 : Animation과 제스쳐, 데이터 전달 심화", detailText: "WE SOPT ・조회수 100만회 ・ 3주 전", imageName: "wesoptPlanPart")]) + } + @objc private func profileButtonClicked(_ sender: UIButton){ guard let loginVC = UIStoryboard(name: "Login", bundle: nil).instantiateViewController(withIdentifier: "LoginVC") as? LoginVC else {return} self.navigationController?.pushViewController(loginVC, animated: true) - print("dd") } @@ -116,7 +129,7 @@ extension HomeVC: UITableViewDelegate{ extension HomeVC: UITableViewDataSource{ func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return 10 + return homeDataList.count + 1 } func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { if(indexPath.row == 0){ @@ -133,14 +146,28 @@ extension HomeVC: UITableViewDataSource{ let cell = tableView.dequeueReusableCell(withIdentifier: "ShortsTVC") as! ShortsTVC let videoCell = tableView.dequeueReusableCell(withIdentifier: "VideoTVC") as! VideoTVC + videoCell.delegate = self + if(indexPath.row == 0){ cell.selectionStyle = .none return cell } else{ + videoCell.setData(titleText: homeDataList[indexPath.row-1].titleText, detailText: homeDataList[indexPath.row-1].detailText, image: homeDataList[indexPath.row-1].imageName) return videoCell } } } + +extension HomeVC: isImageViewClickedDelegate{ + func isImageViewClicked(title: String, detail: String, image: String) { + guard let detailVC = UIStoryboard(name: "Detail", bundle: nil).instantiateViewController(withIdentifier: "DetailVC") as? DetailVC else {return} + detailVC.setData(title: title, detail: detail, image: image) + detailVC.modalPresentationStyle = .overFullScreen + self.present(detailVC, animated: true, completion: nil) + } + + +}