From 29d99fea4e812bdeb53135636cfd0bab05286d50 Mon Sep 17 00:00:00 2001 From: Andrew Walz Date: Wed, 11 Jan 2017 18:11:02 -0700 Subject: [PATCH] Created new demo UI and fixed issue with delegate calls not on main queue --- .../Camera.imageset/Camera@2x.png | Bin 7324 -> 0 bytes .../Camera.imageset/Camera@3x.png | Bin 11432 -> 0 bytes .../Flash.imageset/Flash@3x.png | Bin 2073 -> 0 bytes .../Flash.imageset/flash@2x.png | Bin 1380 -> 0 bytes .../Contents.json | 2 +- .../flash.imageset/flash@2x.png | Bin 0 -> 935 bytes .../flash.imageset/flash@3x.png | Bin 0 -> 1419 bytes .../Contents.json | 4 +- .../flashOutline.imageset/flashOutline@2x.png | Bin 0 -> 1189 bytes .../flashOutline.imageset/flashOutline@3x.png | Bin 0 -> 1886 bytes .../flipCamera.imageset/CameraSwitch@2x.png | Bin 0 -> 1279 bytes .../flipCamera.imageset/CameraSwitch@3x.png | Bin 0 -> 2065 bytes .../flipCamera.imageset/Contents.json | 4 +- .../flipCamera.imageset/flipCamera@3x.png | Bin 2350 -> 0 bytes .../flipCamera.imageset/flipcamera@2x.png | Bin 1649 -> 0 bytes .../DemoSwiftyCam/Base.lproj/Main.storyboard | 31 ----------- .../DemoSwiftyCam/ViewController.swift | 50 ++++++++++++++---- Source/SwiftyCamViewController.swift | 37 +++++++++---- 18 files changed, 72 insertions(+), 56 deletions(-) delete mode 100644 DemoSwiftyCam/DemoSwiftyCam/Assets.xcassets/Camera.imageset/Camera@2x.png delete mode 100644 DemoSwiftyCam/DemoSwiftyCam/Assets.xcassets/Camera.imageset/Camera@3x.png delete mode 100644 DemoSwiftyCam/DemoSwiftyCam/Assets.xcassets/Flash.imageset/Flash@3x.png delete mode 100644 DemoSwiftyCam/DemoSwiftyCam/Assets.xcassets/Flash.imageset/flash@2x.png rename DemoSwiftyCam/DemoSwiftyCam/Assets.xcassets/{Flash.imageset => flash.imageset}/Contents.json (89%) create mode 100644 DemoSwiftyCam/DemoSwiftyCam/Assets.xcassets/flash.imageset/flash@2x.png create mode 100644 DemoSwiftyCam/DemoSwiftyCam/Assets.xcassets/flash.imageset/flash@3x.png rename DemoSwiftyCam/DemoSwiftyCam/Assets.xcassets/{Camera.imageset => flashOutline.imageset}/Contents.json (76%) create mode 100644 DemoSwiftyCam/DemoSwiftyCam/Assets.xcassets/flashOutline.imageset/flashOutline@2x.png create mode 100644 DemoSwiftyCam/DemoSwiftyCam/Assets.xcassets/flashOutline.imageset/flashOutline@3x.png create mode 100644 DemoSwiftyCam/DemoSwiftyCam/Assets.xcassets/flipCamera.imageset/CameraSwitch@2x.png create mode 100644 DemoSwiftyCam/DemoSwiftyCam/Assets.xcassets/flipCamera.imageset/CameraSwitch@3x.png delete mode 100644 DemoSwiftyCam/DemoSwiftyCam/Assets.xcassets/flipCamera.imageset/flipCamera@3x.png delete mode 100644 DemoSwiftyCam/DemoSwiftyCam/Assets.xcassets/flipCamera.imageset/flipcamera@2x.png diff --git a/DemoSwiftyCam/DemoSwiftyCam/Assets.xcassets/Camera.imageset/Camera@2x.png b/DemoSwiftyCam/DemoSwiftyCam/Assets.xcassets/Camera.imageset/Camera@2x.png deleted file mode 100644 index b98c6d8faab24295c0258ddc9cac6b381e777f0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7324 zcmV;N9Ao2&P)Py6R!KxbRCodHT?>>H)tUZpPtOY+f+zyU*K$OB92Bz=6A_K8NOb=5_q2|jYvbusHMiil@5i9t9%MqJicKok)fVVGCfeqT-1 zSlwOSeQ$MDPxa7s7^?c-|Ni&C|Nqs!x9;P=O7@cL2FptPY^fa5-7RBNmW);S6D0?r z_znECc(?GUoICZRqzz$hyeq-o{j=mFOG#@2f61h@UNcMHyFsZGlMM6=dKh@uH=ebU zYd6SOdn`FkDftS(Fczg81LN04Qd%W@z;`2**=kwxN|lmlCytXpJa?MvjwHW+WI7-K zV_BA}SuDr(bjxG_WHO9)3Utbvqd%`U$nrd7Syh#kRh_ftRi#j`mHAb+fFVe#7t2Je zM`pkZ=c4x5FV?nD@(Gmvn5vTHU9)9vxq_$c08`sy9p2L;m!KbVF#s|;)*#6(+$QvY z9;m94`#T!d+quc&7gH91VV`8pYjTmKrC&f>V!6ibo^`a!?&Pm6}ugam%6KlX6 z-elEo68SF7aW$HpLxY>83{on27g8=jm3hzG^HfJ%C5|OvMl81mf4oCx0VG#Jaiij@ zyolu5g3tKdhYyvdTW6?U5#ZL9$Em&>f`KXuAK0w_O>eJ3`s$~6NivvCl+-vKjdnKi0okKBe& zY^GQm&}*4D}Qch6K?`ctNU1I*v7u&N&YP#RJA8&RtaDTxw#$3j|> zUn__9@rAOZ^I{UTkRlen=)A19-gjxC=X?PW|uT{?3M<6$~RaEX~5_FD1528 zQww7O^syytK9%f*SU)*$q_ns)mPBu!O!@^d^-HWTcXr7`Q2Zp1EMY&U&p7q(xi{v1sXxw)1c zFjb4Jsa8ssL!|w4ixn_N$;T+rBQVu7gX?7V&db#HfSig-Hso$=*seWtD#nebpawc0 z02*EtL;u9vR6=I-%vCG>qoWBe8DKd0_QD3a32z|3fWpgHNe7rc0rlKJX`HN#+u)Zy z=(s_qLcU7?p0iN)+R#j?1eK>OJb9d4SE_P{XSh6CsBf|k>J<4knxKh!$V{WwL->}4 zA+ln}rD}(1;{Ko?dapIKZKq5JaM*V{HY^#?M6In6xuAWX`XDTxx%fm5nCcd5JUWak z@n((8C4@;hl=Cv`r<=Ry$dlzdfyar{WV4(Jo%|Rt(FBw7=cHBgAv*3;yBgKHoHQXs zL<*SXBI_IYs(2iVDf%l2Kv|788$eOdgi!9-ut+vrQ_!a)a84~+D11fXtMBaYx$3#1 zdF5ab8DP-4Jr7FwRS0eN#zaEqLJ7aiQHB8#jF;=1sgx{2Va60yAol5$T!hZ>qebz_ zkvNi1zr-SI7T%f_MS+E@*b;L6XeHwYI#_5MmXT#;nbG8O1z)fWooecyHVDQbf2z=H zn8Y2{kC5dp`LoR*i#Oz{>ZHuuGh1P@dhfgH7F(mcx}^y<^t2*Ne{E{My0u6iX~{zc zjE(A)EJ@43qBs)-MHUno(0@+%e##WL9dPS{5*MR-B^=U%s!|-d!?%)Ol3u=}7 zM%Ky+6|iJOf;ypYsH5yyt&jw5LmO#P7a%IShH=JORtNla?gsj20sa44K+Z}uG=N(C zd+5+E#beS~A^7CRIL)cWj?)wc7>?j}i2NR4F&~uc?XR2nJ!Fcmd?YG?Tbw+iGiMyy+q=qb7+<7P(Rm zIhuh59b9ZspH=~jYpd|?)G2j~x*m)EjIRA@OWM>Vl@VYb-70g?6qzoo>_+u>ex=W1 zViq%6>Xtf2DkEJun7TF|5k>`I+g3AYEx>S-8LF=fHF@@uVQy$d zt-Tb{C|QNLI1Si3hwe?d(6+R(PMU&%;r3N~N1_flmj)d$P9$!gsZ2X!E{DoJpa!UO z>fW>yOdHeIg|aOO7-z4u(e_nTi*qUyiG@@jT|9M98yMw)Ey}j73na?h>21GX(pmV2UNux*})cTT_@cCS^3nuY#Z^e-j1?5)cx^_5gQO4}B&iBXQQxo!I# ziE;wwz0YmWPor|A^9$ZM+LDES5tXq1(|}`>jRq2oa%}IL#1}AjZ<$Vg3@&a3iLnpKA$(FJRVn!B>lcPdRjSSMLp5L5!3hBVyWyHqsUewzr*7`XumQ zNCR(`KD0T5@TnDeeML^DC5kv`g;l@xBRLjd6M3BnLE-Hq4v_U9OjqqC5-rqhxN8(X zjrDg|_F~}QGKI+ctfn7a?1|BC^PtF=@fm$$CgXDW?QG@chC4lX9B?Ost*F!S#y(dL z<;#>2pV=?r#h8#8p6fThvc_ck5zcCo=rlPO1K)6LjQ0(Xd0=&u^)>AK<{~gXu&_L! zWg4c9dGY+kGqjZ-7SaGiuL4jAJ#6b<>*+;7mpCqT^#6;4EA9gT%r}T34bzfGT*{*> zhhwYty7a^XG2x|80}OrlBXYEtAm1}MwUndF4eY<=u=&`0Wh)Rj*5OfrEMC#H6>Vl9 z)o2G3eM!;)!-F3BVhTOLO8}ku6e5dTyz|D)4?(W^nQvbRJR@ge+YGkT%_tKSeSl%% z;Th>%T}D9a6XoLh$y=uCCiyy=BC|!)UIy+nc-Xw$-(_;A&1gGaafu13m=Nx> z#5w>*{=2ZmAusX_i(jeu*tUZWb@TILqi^62<0+HzjjnZ}N_!+quZ<1Mto?U)$SDx# zXt+)9lTk~!JVfoCayp{(4$$RE?iW=Lo=;%4+S7iKLBg<*sT=xzeNe4D-!@Zi3&NvN z8rlwHGLJyNR~DjWJh6e>FYIUj$9aS2*V|h!wT`{Rsbc41%jR#HHtY)vng15RU4rIu z->`X?6+b1P!cbRYo$haNX1j5^ z2ogl86BApadHf2CX9EVEAMH_39`q1_UR;)DTX5Y}#oT!wk&*>iGjdu@jr;{XS=PZP z-2QMTxF4Sx#yHXdNN*OCRlu~7>BPjAE=H0(G5)8E^nJr(^5vzrfF+MnvJ~E!<=B(F zpmVNz({0GP&-87Nkj{dzcM!zC=kRw;%_8eaRL@uA&7Xna_6vu5Szff|E`7qvEdvm&Mu_8FE_}0=Uhomi%jUj`9_#f<2=)WPW)y} z@4jD!^OrgsH_dA$9%VNBz7_?>$QZ|V>)-?Dh_wdqMZvH~VYCUJ_`5xVUFkG<1j z95b3ubTqz&LoL>1$~C;j+UL_A`9W2aT#mR=jL*^q028EQebf}Up|kn`suS~xL!?3Tb3b{IS6^m$aNKPy@rK3y*~q5A3Ja_a7|bD+ z&lff3Vj3Fc+DwDp*d%wNrno9I-1IkjkXL3pC(l?6`en-I_uJ5>4FH(zF0^+%9o2?^I)}MQV!g&Nwo41FXllK-+P;4KKYznLx^@2}I?P4$h=?&IDx^ks`quJ(Fm zZ(5ya@@5`h+DsX|adCQfY}&3RlU>7TQI-)A2I-Egm1n&YclXFS-rrF?V-)n;UcR;r zki{D|5T4m2={7U2U$yiD2P<{SP_~GBOiT1#PZF!#T*{hW%OM&$L5^ZQxyN21S zD=FSy?X|zUJj13#RpPE?>0^zi;SYU3B6{%4!%voovJcGG$flNjlt7jAmTqoPO6&oH zvK+ndGV4njWl9^!%ZLl>XIdVP3`d8>JSsjWHs#tGEQmK)39rfkFqTyB>`eE5T{j3L zza|cjO|1job{?K|J3HhI^qdO%?)N0=pGO0m;tQ!Yfn)Ww2bWOAmO~B0WpihHwZH3f zwG}VMB5zoj&*aTKGI*wq{AR?(=BJ5GiIv1Pv*bPPw-2k!8=9^CVpG~2f}mZVHux?p z?Q3ap(w=;bVsra8hj*Ve%$qXw1;q5hwx#Bd0b+z$N!*~YQd9K3X6_a_F{b7BiZyso zyZo~^;IrB4Q`7|05ytIDVO`vuKApV144u3Od&A=RY-r1k#0ts_cMb;IM*y$MaV&hM zOnAdD&s?X{JzqVGfxX!%Flyo=FYq8Q^7L}5U22VC-rlgdKAYIm#fS|UXzx$Dg+g^y z7Jxx{xK8EH%tNEFm*_4S`r81F_V`nlZjcsV7w3?dH;#E>pBKZTSa;*iDwJmvTjC{n zg_+ub!7{y7+7eiD+>pDiVcPWlNQgq7x~?O;vx~*rPb8I`0N|`N6_06{wr9Rd`-~=^ zb$g_Vd7AR<4|>~%u%&L^*ez<;q&8qCj&dXE`_f&J| zA`~zgAovYxoZM?yxDgICq-7eW&E&^CP*cy!43Fz?$A-53HDqjaFw$GYa7Y^pd0r!7 zF9~)CYSYGn(2_ggR_xZyZ6OqmeGq`)f}=*t@I+E3K@Z;nc)rg+J~NDQq{-~BFulEP zWs!9YdPR5eciCJ9HY7IOX%F;edM|8*|0g`%?*7huheN$n#>s&$lf1MBkx_5PN5P-` zlE}r|=c(MaiGjSsnyew8!J8;*v9!fg1}wBl!`_TR$`GgJJ)$YI_#L1Jjg3*u;|ERN@LqjA1qRp{GyNB z2bj*evJTboCkB~^=I_=Z&oD?w!1+K6oIt(~qt6<&%+j7wCN0x2EqOqgw86nJgewsb zecJ&OowL7iZPwQ$QBdqRz7ubZ-WUShj}K{(k(rytiYai^O_Hx{98a;}nL*@fOs>6y z`{qP-@2b62mmG+W?16|s4ENI!KLOQvn$CQAh8!4XlQi^RYv|54`4Hu()e#fT_+99~ zUE$KEjTd0s|@-7N;sByYt5&!@I!-@Pu-ux%2&UA(h zv#-7fH=qP}>LkR=v6&WFm@P5k&AzWmVqn*7S&Q2yFG0R%=&#Z1hdv*zP8=+^Mu%>1 zq6t$c&Uq4z2Kw9NV4^Qc8er%!2UFM&^u-o_I5ycF-WCqH#JUDqrme{>EW&`M*x~3T zltMbTI#!n%v5@IRDGe}WR8?ho=!7Ld))k--UHg^l&&h;*9qs0eg=hzQJas@_P$!|4 z)zDUcSn%z@q4T>Io!^sm1qBkPz-iBa>C)@aaq7KY$x-+kN$Y3nq%CWjgml+i@hTpn# zG$y)$6C|^ifEe((vYI5)jIWjl@$snLJ4bDFDo$wqrVsy0Pz*Fc+t5bZqQLf(j=`A^ zK9?_GoW02leCTrqrBbq}91qUSS)c(DL7UJvhQ(QsYud*bFl0Vj5R#n zJ||#EG<>KmHJV?tq^_%5n!FiQp8HP&wk=>2Z3!@MWZOJXg1ms)Iz#OOU>4>{pB079 z)in6Ay)-ML5>QeN&<3=HQKqo9ZSy>d@&bnGj<1nl0yJ4G%<}N$D!1mEX6u-IG?lpM zG(g?c21Yr+#`c#He(4JWhKai8s#O^Id&rML&M-@k-r8ZW8Ocdfi3ncsB7xn6IA#SHm$A08fMK)8!)?Psx1J_ z^_qP9$S@?m6a|^u7f^YKL<7_@bsd2DPi)(2Ce#KD`JFdHn$a|wu31R}^^a6HSzptX zsX}I`0qT}IMl%1o!5sW(%kxH>bsKzVt8?(TgX@=AU+(C{`d^X#^U?XlZO88alRF#L z8$NNBpnw{nLuvR3<|OSfLl)a=Yh=9X@(H6Fh5|7IoC`Dq&6DYZ#bI!;{JZ)Vizl8{ zt`Ia(zsx#>It42;uy7qSY-kD=ifjxRCc;+Jl}KnbpvQE8*ufn=vNqGrx*b>f&qxE* zVMhmQmfj-=jndL~w4qTVhd2;mnD*pxavj=0t^qc?P(W6pl|GG`+Pu`%o!txt01ItK z+j;q!JRA36yv*yHtb;m4eh-w7^oDCaE7=X<&ku@ptvm)Gk^MEq4zA(AoUIBaA7Z<} z3GMUL2SHU6xQ1bd%oyuFr<#t>*utW~_zZl4V+TQn-`mnrSJYWRuWf*m8k&^_j3f-cu>w|giVK--Z>p3_RqON zLGPgehM5EX=K=jI@EEMtQt~=h$xrW`qh1SIn1Ps%6N%2;kkN3zM;9r45lu(a|EMP{ z@MAFJ`ebJdlrWs6^zy;{2Nd%%fOn}kcyE5DE~pdK+(E&@*S9e&u+SEv)iADMu|N7p zc)rE`9psKC>Z$6a%-b_tY45@el22UIaHSj;31&{hN95J zf#cmEcnwBJ%s8EOv?UAkEg1}6^!TOZf^B;ZE|*oBtdz?xN{Tg0YOV@0x0KDz6A}qv z$lvbMSlFr%up{h|aU{JL)e?b-eDO;mN3&Ko2GpjIW{GS>%cd zDZIMH8jnMqRsuBUgL^(Q05~tBsk*s)jy##UQQU_-mO=EQU~i1aUS|MhLMTFFP>$m) zU5$zp!;xK))-bNr91-pm`8AZ2wO7}r32I;I|-fn&_4@m6fSwy z_M%WI1H43QYeX(6c2KTRK8!C3V3-m8!o9FTZb}I@yM^h+iEXxE^b^hrCykSpxpwSP zhW@x%ZpR>7&ncgXYbOV?YW7gi=oqG+Yc^Wn*t=~10=&E$ZZ>!D4=s2Xx2HXJS7JV1?3{F z&MtWfP1K~If@`Epq5gaoZ{RAthN}jNycD(z4Oa%bCgDL3^xcmdbTR-!58J_q6kNtR z?r4J6)KtrbLDsY6V5uG4FMy$RJYf6LtuhD7{VD#6{)*BnF?RN$z^%xym8XkA@vYci zu^E2c+Nwl8uN@?9QwB@h!_!rdDM~3Xj9Le~;p7@t(~Cl( zjq$~16eN8t0pk|ruzRh#_db{J0yrGIIn)gwkaxO>gZG3(_K|zuxm4|mYZ+q=7*}aL z>1(@@1vMzeJa=oPyMVo5|nRCodHT?>>{#hL!AyXOUr1O*w0MtmfrYk2I&B)WR!p+vLBD2ZYuhDi3f z2=g$>YE~mEf~Zk9!FlOyc2|RjL@?_sZZsx5Ji0NDJxgF+GdUs{6Bq;pWSD1n*M9$< zZtU*4xBGTi-P^Ca=k)1&>sI~$Uw{4It*XCXg3RTM2Bef?)WbA+C`?l%(aADOCk6zK zmy(Vn{6mQ2V)xa!uOdm6*1xd+3D1Lg9zfjTe@Xp9(0+vN$Gd%eALai5y(5TrRD@_} z@Ab4x2myBH@>&DXxw&*|;L3F}_{?7VSR_i*V8YX2#Zv*0(*b~wz~HNN^2$g{0C4Q3lU|8L$q=U-a-LdQxl*cnI@opksBZ- z=;efUvSxQTU5=oy;A{MulCOCZ^6u((xTg9!;yyO1j-LMWe9`ABT^U3wdmyn}x}uF{ z!n4NUxdPxhrVPqmJ&S_ghw(fKkKkiNjkLMk-Rxxxq={?f=)DJMG2GJ40MAM4mQ}_S z1icL%woDjDoqHCFBju=xvIEk%PC52aKQ*GTzm6XdgqlmA2KIr}>ao?-c3`nMq>pUj zQz{!E)ppA9eS`FMjQ%&`>p8aYi>8Pr6m$r)Hri?`Y4zd7g27etSIGluRI8jk7^NGd z0?jx{qe{L+3n_zwdIOR=D+BaEZGYS}bf zg!3ka2aHP!NTGIlUNk}-sDY+>pesXCmj(oF3j}FtxIw(4i)6m(lmw8*w8#k<8N3hU zKwkxjN+M7BHVn`C3qq@#eo#a7t)6DF*K>XzGbn1KTP|f_MH~GCz;ic#<2=@te)58N zV(4xZLJ#CWj86bJeGchwgwj1Fo(WKuc8G~MXNk38l?^x(I*RB_uLoQ4q$Xa*8wbZpN2* zCBDFgHw#->D^xdPlIMm{fL=T24BDRWjx{@Ae)R^O8jfP-dX(k>V6&mS6P=7AZ{e8B z2f1#GG}FDsHsz?OfE4QsJ%+FBMR_aiRK|kdg%UTy05*g|v|*q@yqOxM5TC2sE9n0v%-g%BXNh>%e^nB`X%;rLlS)I{Gbl<}s50MaKqWyO|$dK6!_1wIu-7Yd>=+$?_K6Th-x6Katc z;zQVm%=*%Yg7L1MQBBwW_hK=WZw2QaNW6E#zJv4=Uj|v>g@eLZol!>*ygpy>9@^&8 ztbsGv$;vmn=|+&f)ekQp58jUd5PdPJcYvM;h(4vcJV%g&!k?`OP;-By zczeW46QErK)ot>mp(wSWY(KA^cnU$3?Qcd^(Ixp@)}A*Y)wIhK2g39cbmDC@K+q2K zgPJ3a;-@M4H;+DOAlN29CnMAfR#QA?*HsmwxqS`d9gq3glE*;3{}oMA&h3FS;Tq#i@Y9qs z^NKkm9!JcHnPcY`gPVEiGtKe4&*W>3#NN4>W5KgN5fr(xCPXs~h;lPTFH>=uaM^Gf zdBul6&}?IDYhLlNqw5=xc$~;`aeKD}f}3)8-qu7HnvLG=in=huxNNwLxU3+NCrv$o z>7rp<b zE%=Spa4(*HsgZcvk5?c1GB~hlIDhQ5S}?XJOdIh%Ih7ZEl`U7 z^+ba1h&GEA+7)gH=3N7U7I`~9ymxva$nH^Bz#qt;j6MztH8rY+AqMGq5sfI*AOd64PdR) z7tqXG3p=XPDxjd-0M@&-(gZQ>K!TflCO##<)Y>lsh_KA~60>edckvfCJznR8?FOFL z3MTF^5nTYc_-38C*ILc-zH8ubBtiWE*8$ z)u{w+K;oGT*vS4dfJpDYbApzd=A6zVFD_bE*~133N(~!jTVS$( zpn>3nvR&&q6Z%U*L1*jOxL>(OVs|2+3ZWH5g4Xk3YYCLS$$~}=uuWhF#CmNcxxWP4 z)!`CXu94vCUIGwx=*k?=yE?s&K4bP&(52DRqH|h{tlB~JBARA1wdE{8OR&Ay!z%QY zfW)2;>?YC$An7^a3bVL*5~G3<;1=|%$m_PYa9o@VK3%-mD4Yjns$AX z?$-t)xHx$!gaJ|M13@*1Y$I$dprgkvj*0+Yy!%w-${9#}@G+c+3ssmWriCCY%~FU& zjhOp%8em&tn@JZZn|E+xe3flFn>2}Wa{>~d02ezwT&Zao7XY=zZ=qSIKD8Y?pz`L8f1b}%^vq>6pr(Nn*2$V(yXpTxWr`Xlq{eE4YC)%D zQ!8avBMnBeIl2xIv8>oe*nmj6$PIy*2H2KFP}6J}*tliuS!maFjl^5Q9vPsw0VIrF zsa^22Jd0Vqm#I-Psf`9kY5)rYpTVpL^^N;+a>?i_I?3(E{H|-Hz5)7%4iKT*?B!D- zMykMs7!9avz_P93<9pPIp~A3i-X#@RKpNL6$6^Rs*G%kH=4cg{rDLLHt$~=wK84c*wK+MLvl&QkzE!%fNC}SUq zPmkDpfOdkG@^Kj$Gn#AM-7ZSSL{Zj2Y;1|o-%`EyO&CX0GM#Rbu|@)j7DEzc5W&H) z$$&_;Oig;X8em&vn{yjKO}z0j45W#YVI3!vtf!J7#|2c`L1$sYFcE0{PeqGdG}J79pDUe`O~nM#jvo+iH>896q|Cvvuai6)oqR5 zAf`JBP_E(F{O}yqLOjt@Rlmb36x4&S=4Y@M+^@=2r%w3}JSh1CGtKF}%kaZE3wNT^ zY#c{t!|ran91N5TSz9~RWp0Zh8Xqu#CiBxe^m{bFlE#4MGrSD@XqdUNG@!`_Yh#$O z)v6<|av#!vj2Z_nQTK$%;dhZZ776U7Z}N?+NAhC5)kbMjyrEr^GhMwy2sD#sp)- zj*cym`odUssJeeQ<~to5peO8@mUEbl&^=z~A3(j^YaYc$-?By3Ie5T?g$Hqo7^On&=nVCoJ6* zSFV#mY+rVTUpZu6%+oJ^#lUA?9nS57ZK}#@hmjFL0%||2$_SHF*BU27vKF7(Ll=7D zsY_<_!4tfK7S9ht%KmQsd=X*WR8<5pa&an+Bp{9LkmJz4R-aB`nsupqCX9^pN} zeDL%&gE=sR!LP|7SyB>U5mi<~Tz9v^I?dc&T%Tec+aixSOmr#?>ln0= zQ8W8@q0>J)Le^r&q>q+Q5(L2e$Joc#HP(0REI3L3%;?4MR*DMDYf_;X%_NMXu08jh%~)P_1|CXzk+b>u7VMKT7ASY7eN~s7gaedieQI#~1i<&@v#>p-??EK7_CMV_Y_R$f;4$VXKLlISM49 z0Z2gj2DR*|r{;xnk*KxCr&^twp`cX*lB&6EGOae%%F~IM23t+U%uyhrXQ*5wg+loU z60bJJmrvP+@1%bduBHJl8!jU?D(b0q*lHqXEFf8|~TxJ?^LB-*!sBk_>(%E|4+pa{lN{=KS_K8g(tZ;pe=Maqm(m=@Dy+ROuWlcI@aWLfkPVm6CP zJ@+e)onasm`bcWm_D!>el0a(g3qLiC`)Bw9PRD@c-}fyMfALCUrp-K<7xVOrPbtui z*{o6pfR>zvoq*-j7xWPo#h}1+Y%HN7LgA)GKM1wMtuXGt8*CJ>`z0vzVxHjlZTyO+ z+vt~m;(U~C7uaD81x7tglTp-a9y>BXiWf}MKlYkK8+sn5P363YLT#Hoj(r47Qo`dA zPj%CI$lc{=E_@1Y@5wO!Nk<~XA34ko8^8x|H@={|Q24(=yr;3^^A%pKmPsR#Ch=_L zL-L&P5Oy4ubaJNn<@DaNT}4kDV<-d~%8JDo&j2aW`Y?I7s)}a1aVAu?%hNCu`Iet_ zW4)53x5J`#RF>=c67&LAoc?VEEt?@xL|ga^^soev7mPF|jyN zW%;^i+r{K&rHe5X0Fe`ws3385!~iKlhl3a=nU@JfyxS^3&<6MG{{b9d8v&vOf{wQU z9;am*Op9qc#>I=i2JsHOOJBfkF5dQZq>J{Q4%=l61u&j5UP%jr4)ipOy-GAnC^4E| zi^DgF|4Nr782y)fhiE%M&;S4puaiobAk#b0U|LL*X{U?MvayWm;*`@n%XVSIDtTrM z!E2Y&oXDQy?(CD4W(p|uyYQ4f>Xf_XQU*c~%6p)5UZFY0DPGRupvknE2lH~G!!ok0 zPVdVwT*-zRLjiPXm1-n-rH1E%m7(@ivb?jtj&4Z_JNkH9i>zANN>8IXe)G{lk8YR; z^J1P(EMl_mbb4P-;mS75H4+q-+`-LOgTerbRfgu$ve)Me$G*o7NuBs|U7D?WbB)iu zn5R>EmX&38dS6!I>Nb3wdehF-NI((&Pq@i>zcifBb0a)EU-jEKnJ4ph;%mta*`3~( zO}L^Bnfn{ddN4zMv096|n zRKrcXN+rF?@*Xiq^XOHal4pAiJ$LwVD&K18*RkWTqvBN*>R&T ztbZwAAPE{crqcdI!YPl)YP6kKxY3~>aab0X$&S}pN$b(i>$iJX4q+N>xQgB1N;MMF zmo1Pm=k3)4i^U;3V|%BEEDl1a`fPI@eY0Q3V)5?}6Px+SHQ~v5Uj2cNQyFJSjNNGGh z@PJMBwBQwpr`DAY0V0F-u-;ktHys-n65_?O1zSx@k6o$GJI5 zD=xj1JFRSK^5msV1wdQLImF$g0OlDf)kr*EGNwg3wz~^JNnVL?tkZsTQ0z{xn5xos zk}Z~(V^!%FTYAfO703J-Lji0@q;y6ME3QANyybDR>EDvK4+kCF34TH?y@K!~cJJ~W zb|fa-2r-=UG9qG$1?aF{#t;T|X@{zAupLpoDve@Hk1x^Lc5?4rB>M5?f6?w;KEqfh zmd#EEr@Yw3Eu}CWw#yg_RD{%1oGz`FfE?rnGsj=HfLz2wr9LDnCJj?vBYcff5xyZoe`0B<&n0o3>3 zvU}%e7|X!2*zv4rm1l7t?B11nSj=W^*JruSdmK9!kT9aX)ontjc;TqM2g@mb$%Nw= zG3*rd9jE+6ZV>CBLT!YQVv10-0vI+D@4W7I5 zEf8274Dvfpd&lu%V8>L^RWR(|`DL8UtG1TD5w5{m=77 zANng-BQ9@VuXs+JZOJgrWz2(l*~UPiB_m{YdS4FVI&3u&Ge?1h>GjG$Li2D=ITV6p z9wh~%f__}tDo=NegBLg;c~z*Arla}we7bnqyu;V=Kba=ePM5B#L)Np5a4-bZ#Vh%D z8f-NYGe?0`tpP~NZO&3CJxOEX4SIHLhfKSR5TEIa1HV28ui7jCY6Ct(84pz+p&q2+ zwAe~(Hfo_unC6H$2>~qA&=5Tb5RFX;F3VdTwwj2UqdgcmR1wWlB8;k*ZdF$-Qnj-V&=s>Q8O}t4Txg47PHM6N~VV< zwuO}hB1u3xv{W2GmGxS}`}rX?vhm-ZpWK9PL$BCwIzGffl)p zc`;9~_!KK$9k$6BVXP$TAPGqP0)3>UDl0Lv+k4F4THrLw@0Lc1#;e8X(TcqX=}iFY zdNz7p`Q&v`0MO#@etHvyxDs^Ba(Ab6`s98m+h)2rZr<5pB(;x3AuLD>4;O?Rn)Y$f zH@K^nF2u{9+eaw#P)T(#_J?5f_o4aq6U;AJf2^RF_cn;0Y&0{WU5Fh7$buzd`19iut{vgN!VKuPpKUV)N=FAcOXT1r#{r*MRL`m z`E@OTaP5AgFhKP?NWT@j>w(Q5;wm(c~A)h14 zu+Z~vl~EpqjM=0r=PitpR3i3;5TG?MMpYoq<1c2mU)fXvb9g?OLz+TJ5(22sh9LYS z00x*!xDrN{tnj3l3Gs^K*7q`ETihR^dCKZxY}i~Q`bZoHXPy5@*?T8x)O%67%7&+> zLCDaEuZ5=!4e_iskdHF5Y!Nn@wXlf^;H|T;kr)=cw*?Z9*rNHM+$@9J_a?uc4(ENG zUPj*DvdOCnDhv(06)Pj(q=_vVxk;5FVeo!o`vUp@lH5O7nb6FTZupp ziNlTJWypTBa`Q9?-X@8I28QPj{*zTU4pF=cMtAa7W!k`kg$V~jjzHq|EU3z!bV%nu zSkiQOqb_xyKu^qQv$#Jf&~X=v3l{Z=Q{Gfi23!_gCVnd-W_!vD7#Ry`*LbDN7-kti z22ax0(#3K0PFi1t=Um0r7-^_U@Y3!XmF@D3$nZYh$G{s2otVpW4e&4o-1h*`9|jx5 z8+mJI58Iw{b{Pxlh@>?tDWwRu(hjKPq;y2wyhGdgLR9O&bQ9OaF&faJfl!OQ5HlHG zQl^D{0V7QqzvInR9WKYF9mls4N@{UPn^iD8c)YyYTt)-FX+TTgh@}Mv(t(Jhqy-X3 zm@tky@wbofRW39UXYm(8g@#FMG~iYPY-? zs@b+P*U3tk(M>d?ft)nJHpaG=Q{s_{R>v?f@=ZcW#u|y^j;)4Jf(|95%k{SYjc(@+ z3v(rE(isgTY9MA~>f=VRdCT?_i96i80ut}ZhKTJBG_no8wYp6zJ1??jYT}oN24c3Q zK5hhcVPl#$wtY96a|I+OR8xihs|EGCA(}Q0<~t2V^*Aun@-Z*VQUjK4sm`fm&B4}d zD&2Q!Tm$LwVzDnEEysg$0ihH4`Cyy;oH8Lpz-S;r18h@lTM0oq-?FW<&ATPw8c0mA zGC&UiskX<1xMdiR2X}aj(`k3{IOgAIz^w+@maz1s)ouK=@nGYYt*4EY{4y&b^)`uJ z7?OGZIT%cBxxXKOH+~pb9`VMXIsxEc~(GT!j+YD7yb@s!^9~r zT$DGNu_Y(%m~gimh|OS7UM3OacepBG?Rnvry%jHOAoVQ~e?iLSS#fcW8~~UeAKfnN zoTHdGMgz_oVB29ELX50!*@5cvY-=N?lN0mvr@`wcw5>#)*dL*_elGxYP@)MgA`P(3 zu$ zIcAmX>1PiwIy^tzAYMtw)9IZO2(Z@U5x5(#bt0Z+coe59%*BTA8?sDiqL-ltLalO6 zG-}Q4&Z$+EsxmB-coYW`EJ_V``>Z4c_QCxY>Z7C`C*3l(iO2n=ACCUM)Kg8{Ffc)- zp#ioLwiV3{Bz;TCv2kL5A3bqei>%5%D<(xbXn<{l zZ3JBkeGV$vuw}~%3RD6T^S!;1{sryBjK`L^l@U$FnLCIcGtLLM8Y`c8Y!k4J$Js`7 z<(h4mZCI6_QXeVKoX_9EQtsFAl?cYeRR1AZ2Tq}DP^DwimyQO|C+E{O^c@U<4Ow_E ziP)9|N{Ujhk(j$Bh@{(;BuPmuiI!qh_}f#0&10ErfNeo5h**!XSsfr^Qd(*xOD62^ z5Nf5LA+s0pv$jjn_1JxeSLvFoOf|r#Y{2Lr)|q{H>0S&s(PuL)A$QADOO3?LSRi;l zz5-}wHAg9~wA0#9o4i1Yib-5_8sIYLvWMXM>=d@iHmd5SOI4;m0b`V{oiwGU(dM|clBzKH z_PnW?;tDDKe=ch-b2RDn4u!xrz1ZzlJCL}DZ*Qi1(D_o|Pb|@1piuO`)?4l6#Bg(8 zavI<==CaleBDP7kO)nIt&DoGD+?a>t@x6nz1>uuY-zh%}x&sb~70PrBfr8Tjd*=Y4 zJ3SC=_ozym(X&Ln>j7`wH2tC3iMPjt$PEd%tN_Gv^3xkJBcV|9=gIGy#G5Y^n~K?A(U0xu7T z4b1k6Jx~9cQAL;j_hK>R6^~T9z5k5vpvX_93ZwCP532QRP_6$$BTYj} zQ3J8vet4r2&lYb2M86sTA)4c6<9o&IBqjG9NX)&qQ;t8*X-H!bgzJ>Q*b|<<5s{v~p;o%)nr+Cb{t13iu`x?YM9`ms!pEn?}G+ZofhtO9w;VLkDj~WjA%5@2)){kITQG#Jg=MUmf$enwKJ;eT0gyW zP8ur+AhB?Kf_gDY zndYQ%B?eh0E*K!i<@RzqQJhEWKa}umH2YRzgTUuf-Lya^tk)BW_ohD5b)NTD^&wLD`8~|T>STgUXsee6FW=(aW$#?&;0eWI@gXqZ| zz4T*DXqRK&i_%q?$3W8wMK0n{Jcl zGhS7@JS`liIrt#VL9=Z(`wSw0+ZT5q6W*t2nbZ%FwUgpi@!foQ)j^XG?$wx;xP; zemT?SrX02rjx^J~IyZ03S)MEs79Eh{dE<@y(T0BrwbNPgumb&O5N*d-whPMcf)TSv zu&X*kUAn)xTx0hKsUDuSdVskeHBCMA!ydL%@e38Gek`$|o8O`-w^Y|&+PE#i*h zXZ+XlKfqaw7?W^coI1eyM0~VLp*s}Pm3L7CDV{N_?^N{@T;2>rs3tEI4sw(lFx%XKE zf(Foxd!#BrD|?%S-eZ4!&WaPek_A#c!=qZ|bLj#y%g)@0N zD+BaEsRAfo&Lt0|ct&|yd*1+k15;lb0I0F?aP#kh1_T{KpP{{`ioTc6<=-CU%#mc- z04c74ah-DPp?+$_Gw=F3J|1rVwP;`;sH`4aO>GAji$hu{773BE15&(Pc&~`P2hiLT z)QlSHqRvS0J1RH_eq< z1BYQePhytFnxRJ8Tx?T%GG{Nl7-bKnM0N2-hP%7za)dFc=He?`cysv@1@`-%SEvr3 z#JFZs9X)L}-u$2d43Iw1MbaJbQQa4|4oc(M64R4jmfHiC;6n#%YC^Qu?5S>F_y$P! zdPxf9g>GRtuRjY3dZyGDGA0#vjt>S%St@R9haA^4WG#Ka z7=|_z$xq3WM4?813&yY+!o4u2f?hhbR2(Q&K?_kX10=;#v5qN;(z)1k=v>UAI2YiW zjvA}5XHxJ?1G08ZdQ}GK)oT1qlTFPK43O0HHzGAJqWiCH^fC0xr(#;nG%S0V25{BG z&HfSJ0S3T;=buo>U09Z}6+qt_l(g-#I_g?KUqnU-Zvt}GfB{m@s>?1RyV*xQOp}Mg zGzGvq8SeHIvA$?LfOZ@}#skC0#qP1nnkoT+O8i&h9sl!sBtCF@0MGnCi03|lV?XZq z<9;9CWBt-TxTD`eq3);%(azrMX;-RP)Px+(@8`@RCodHoDFPKRTRhXdF|L35oJNtwM7zx#^4tWG$ux)1dVoE1Tu`DASO;_ z>+su%#%VN4)VOvdfS=KbA52BuIu%V!&;$h3h^P@_R9cFNiq3tn?;Zbl^}W75%Ugj; zU-7-9+;h+U=(#^G=bn3eA0*r-X9TW}{5JLvtvk#_6$&X!+C#oJy>mqu-1N{01eYaF z-KX_zVj&g?=F^$g73LmY&}JG3DOWYc=8B}cNeDhA-37gymWA+|Gp>AK1Zq~Zrza7A zL=}9uz*IIKqF0m>PsqqaAall*vnNosGBIB3Q(t4|ndw%PR7l*>-Vg|>7S)5t;&Ms_Y_k^E#BWI-D|%IInPgDkss zXLJ^DWfl12Q9X%R1g^N&+ypauxvwP9@N_K=n)O!M1#KmgAz!&X=Hq_xCJR2tC??TI zLb)m0;D6E3*$8gbVFO1m()#&z$Z5zz{OIv`=eE_Af3DXVDgEEi=<23D$FXN{O2uiu z^^F%&(h6+B3taL`XRH(9ThUM%iFL&u<*GGx{@<*1?ea$?=$h5B(cQb1i;1;!nRptp zD93Vi43p@_>VGT3uMP=i_VS-6^!E>bi;YGZeC_IJ!^A5x!3s9TZoq1`5U|!x5BZ;H zB+@d~v(p_>psQMTPf?SDcLC~Lz#Efk;6$_|+7LKdmQ^*!E>%??f)3F80JZ5~^c#t*iS`2=aX)rw)bfi5Lz?L?d3CCYFD3JtR~|yXLu>m zcIYRQ&u%K(IhvgSd8?;Ux%5 zp5Ui&nDb~`ZTYVwwLjeDc>^s68f_^542k?4&{N%^IZD0)`m!#U$?;fIHTfJ}N!Sr{y+8Cg#oA;KhYF`Lz_H=xCRtwSLGSd7# zDi4gq(l%b#kw>}S>5!$ZL!hgg;+3k_`x2ZS2B8n308$bwqV>La3cymK%!$PPDrqkx z{25mW2J1E=y7+R;33QvDcY5mWXTA%w_~;=+N%SM$4`TuU&dG)|D_x}}rSG@SE9-T# zoo3s-fPA*DPy{`ObAU!Y@20sU0Jc2I=#FTcA-h6O3FK{OnA1@dKxamHR{*x=%|v-` zLnCoBcAmwVj6fh^a|%kG9)%uqL1!Xo(#hWnyLZQ4PH&J*g;|L#R2F{Mb&LROb&VLr zA=NJ_JtBd4oiA%ioG+5v90U#-U58y4#N1grddw;pv>l~?$~x-Ge}ec_ z7FG9K#dRI~MU&eC1q)_E?~+-Yq|0uaTLNAjmv6y2($t}DSuD9M68{Uj?W7=Rap*%T zcUPPl_#)Hw0Ee0^yo%QwR@K4l5WW@h;qR!G9EI@RQqU7NPXK0xSoY3n?4xTPt3 zmA1MQzE+6p5pvt!9djIZ7PGo{$M18TUHdU;Xfec3`_JH=iy86~2|hpI1P?cMocTda ztLbCGcI^JjmiW1P-pQ#E-nEDPU&7FgH+7sefY~kalLwOgsdRJr_1hy<@#^J~Ju}}9 z9rwMH?6lfaaN!;9ylq!Jbd^4{0sF*3ZD39B2uztv>LsP{h4DNL)J@ zuZrY{l})j_8&`7bGNNASkhCB{OLoyvU@5l8PZ%5#HEDvIclE`0AVjT|he1Y}1B8MF zE!p9+;+-C$Q~|hgg;u%}8KUBL{vKSid9N}YYZMwAzar&}c|n7g(ApOJ+lz_Lg3n%W zhB&lX3cf^RegHH5PIFm4Q?VH<2h&o--2>1)uA4~0vklvYez_~g zzlbfm-kQo-os(RTOTJO;IaXQAv&q~11d~nk!l@${$8q}vTi>3lZi=0OJ^T!u8Nbn5 zTlS}QL_@!@B;vp0P$G4)o#@$<$Y0kSqJC>#yZrwKv>gPyvPN7Y*&L2-gd5*fnf8lYSz@35Ur%{EXpP%zQOy4v*lS#rXF0-nW$u;!;W(@LdG@2 z7fI2Hm%Fa(Xz;DIcH#PHE0HYoxD2|ZtZdXd@(kZ-!UC_>X=~uOAC_*$&_i%%w3)_1 z%6L2Mc3c2iiWzRas|dfn6uZ@X^e%@{*OhL1U<9IzCq9WeI}5P)8ZC+E8!`kJw3)^s z$oTIhJ}M!ahMD|6KD}5d(?__6(68Inh5%g1zg+U)n(MZGkzQAz00000NkvXXu0mjf D{^s~Z diff --git a/DemoSwiftyCam/DemoSwiftyCam/Assets.xcassets/Flash.imageset/flash@2x.png b/DemoSwiftyCam/DemoSwiftyCam/Assets.xcassets/Flash.imageset/flash@2x.png deleted file mode 100644 index 3429e90a94bcf0ca70f4578e79f03405cf653ba9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1380 zcmV-q1)KVbP)Px)9!W$&RA>d=nQu%SMHIl_%pC`onpQMIWv`8>F{awa2r3$F8l#DKfKj=&RHKPj zsvc~ETI&aG_+%Rs?cE+UV5%Q9{-v=Y^oajkBZ(T+G<@)5Q`tSPQd5(LJMIp4#`g{u z55hm;4thJu?%VnQemgU7-t024ad;%8-!?9w1Av_g?^FDQ>a;7bM;mNF*ke-4HNfBs zi_><%t*4~3e?Wgr3TTlaiSt(nI3Blvne|`?Sr_=LbeyF=11Yx=4`b}T3a0o&Doa{? zwgIlyjJt)9$8l845h?|YH{-f}*8;VqEr4r+#`98&AWmQx4yyqUsPAoZ|6)OA%De}z z3q|f7H_bkRV!%$j3JZ3gc%f`K6EgGpvNBp|QCW>PRL#J=SpvUaf+#Lx{KyxoV$^Ao z+f6CjIA?G4G%Md*5RAhh6VQjF`(xD>%6!wkw~ng4vU=5i(UR} zM`r8XO7k7lOX6{Ot|q8AqT&^JVG!wi5(Le{mrOA0rG$G-!JfqU6mYk{T*vr*RJfOJ z3k1GE{{POdX)~(hqa(wn9RHK9*jVyBg4{G$L$#W|Ej|JRQpm#ui}P{}*I_@(Kd6ob zb|pzBaV$xKSeDMqs!R&Z3^*R6m=@1Sk1=peZ3`Lc;0YKlLc(`sSus7zIB#(jIoJ2@ zbKi;aFEh(#>pAOFy4SCq@qI3@0We&o8RrbVGPI5e#(!DWdQ;sbOL(6F*&RjRUg zwwE%kQkEi491TbOyb*{cV*a!Olg1)T?a$tfIhoAZzzs}kS}9oS)ftN#`w_G$tpbBf z_{zs7)ycKEz`0{*sQEv)FV`JX`!s!b(*xSTH%~UZU&jSCu`5ub4Fg(fxskXy@E*Iv z66dlF6g9G%p|MjIM3Rv`xM6RYR}b6{ILMQE4{Rii2hau`ofmd8(_~Pe_rS%@!oIkf zqWyf{5k~(MJyYJ5_rQ~W`YVeWVJgGXM@>8Srevjyt(4E@oal}JgbThNqzHKfdNsOv zi4_5o@OR}_rDLJvT()&_LV@c5q*C|e6nEnWd;llGxX6y>9N;t<|rkl_Dd3do(uelDM#jWCZgkFmqMmHW857C#8#nxYH zxm5%1+Tk8u&x^M+#y>@9hmi6${PJfyAcg2UK0V2GFdgFt2V+G5XrE*@qPRVP{A4V;_>ton(DYc{)1a)f^qgW zl@W}cBZ>KGNzWAM*Gg?r-(APx&VM#dgnafL7K^TYqEUQI!vqg)*D2j;qiXvJ_L>jc~4+u;Xf+!;T3&LHf zi`+!C>;^3?0#_}{c2P+gwCJ)+i70YWYFEFW*E}E7`DV_UnKNewUeBC)FTdx^#e>JD zrjlE&R_k(+Xm$y9jRj^qIXy0Ur2zr643JycTNj|xVgVY&q#Z3y#I`UHUD&+P(AsVD zN{Itt9X2T>wCPerT#5p5X94Bkk1?0r;IS~ARA8h#99+bYRLQRhNlSI{U{phQ#+l+a&`U%*V z6Xdm_b80ranT>;(?ue%+YM?ROZp3zGYW`6mpZ+v#b@xZi0vAD&SN_hyKv zUEdj4>M50f%ag zVacHAVC)eV>r_plRb_U*C@c%zW?)v)lckCUQ$y>x4n~M%4_(GKVX@jEFb{%@F|+NM zYa1t_e#CW9^;4#E=8Wym@u%Ih3>;&2ex)7ieG#BtY9WjMd0<{!#QB9V^&<}Jb=ObD zAq$vymOxX)wK;BrsqeFg zOs@=ii}$c^KF0d=s6-&- z`}7a&B^Lj`Jn07kqKeI7<$lmi3!Cl%k*^|WP5$WPz;wnC{R_wmA{XB6>J|V1002ov JPDHLkV1fsBvhx4{ literal 0 HcmV?d00001 diff --git a/DemoSwiftyCam/DemoSwiftyCam/Assets.xcassets/flash.imageset/flash@3x.png b/DemoSwiftyCam/DemoSwiftyCam/Assets.xcassets/flash.imageset/flash@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..7cbe495cc4b41b30f4ee14e019b830da7ab9d759 GIT binary patch literal 1419 zcmV;61$6p}P)Px)MM*?KRCoc^oZoL1MHI(-D@FMsqC&tnh=!OD{86-s1bHFE5S5syAsBohHoWkp z&=O+cKY-w`01+O9D!lQ~G?)<5M18U`AyfkNp}r8J0wRP&p~YA}$J|?Y=T7(T?4H>> zdyu|y7$Mnr6n+%n3$M@ugD{-HBVu)$vLHb&lLfNm9z2zwFjTd78{V^??SQ?kCyK!+|BR_427tljgLktjP37@E}3_W zTvK15a!Gx<RL?@B2yII#R`pK8S4saIm}gP~ zNm$tBoKbq$HoqFQEp)g5#fBoh1HaJ#z&w0aTcz6cL#gEY8h^}Dr25oTg92nHzSa>) z!quTNXsGYPD0Sg!%eOiG-mlM?uO;_Lp>QS=j^k;|x2ZV1kpk+ldFdVY?-D!Bq-^Rw zg5Guju!WxW0g!q6p|Bl6M{KuB!aSE*D6Wh2pm+JTqB z&LVQUz$8vTf;x#A!XK32fbDOzbumgKqH)UU2ha?T%ZDeS0}03W8j$Qv3B|E}_%aC! z-1-4J9Mx!@evHxvf(D|2fo}hXt`~s%BdV_s3LyDpN6Pp7XkdWbQoh#%bjH*cn|=TZ z@gCWYf41JiwT>w4{D zcNDIj6XNA9i-z^GjxM++3K{AYKnGlbBtBFq`F6283sA^VA23SSvO=l%V`0z0zc@skNa#kApoyX-qG?)2UQ&}tDT}U=F?c_C=g#@(=p!2zCe065}{E%V#eM_Io z_jbOtWzLH@d9udEt`h9yhB`AttRv!{cA=@pz8OoRu%o@ET#Lj3){**qxn@GiJzcND zz|^H^7StF@RLXZ9k#+-XB>LD;((?L9``ljgK_HK^%JWZ+>@)%4mhb4*LFk%BG#tN< z%g5SYO><49seIj3JNZ<|s}%`#2%s{2lk)!sXIc#{L;o5`jWR6uw zYLM5$%eNO;K+fUvBuBRH?;NF|QOo;)Ke`PW&Q)iEz Z?gO(|JNRI{zZ?Jn002ovPDHLkV1f!)u89Bu literal 0 HcmV?d00001 diff --git a/DemoSwiftyCam/DemoSwiftyCam/Assets.xcassets/Camera.imageset/Contents.json b/DemoSwiftyCam/DemoSwiftyCam/Assets.xcassets/flashOutline.imageset/Contents.json similarity index 76% rename from DemoSwiftyCam/DemoSwiftyCam/Assets.xcassets/Camera.imageset/Contents.json rename to DemoSwiftyCam/DemoSwiftyCam/Assets.xcassets/flashOutline.imageset/Contents.json index e9bc18f..193bcc2 100644 --- a/DemoSwiftyCam/DemoSwiftyCam/Assets.xcassets/Camera.imageset/Contents.json +++ b/DemoSwiftyCam/DemoSwiftyCam/Assets.xcassets/flashOutline.imageset/Contents.json @@ -6,12 +6,12 @@ }, { "idiom" : "universal", - "filename" : "Camera@2x.png", + "filename" : "flashOutline@2x.png", "scale" : "2x" }, { "idiom" : "universal", - "filename" : "Camera@3x.png", + "filename" : "flashOutline@3x.png", "scale" : "3x" } ], diff --git a/DemoSwiftyCam/DemoSwiftyCam/Assets.xcassets/flashOutline.imageset/flashOutline@2x.png b/DemoSwiftyCam/DemoSwiftyCam/Assets.xcassets/flashOutline.imageset/flashOutline@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a587b1a28a45e0a83fbc7975c13a1a7d616d9dba GIT binary patch literal 1189 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 vwtpAy9+ZDeDrcm9&2-PI - @@ -20,41 +19,11 @@ - - - - - - - - - - - - - - - - - - diff --git a/DemoSwiftyCam/DemoSwiftyCam/ViewController.swift b/DemoSwiftyCam/DemoSwiftyCam/ViewController.swift index 78ec1a1..2a9c58c 100644 --- a/DemoSwiftyCam/DemoSwiftyCam/ViewController.swift +++ b/DemoSwiftyCam/DemoSwiftyCam/ViewController.swift @@ -18,14 +18,16 @@ import UIKit class ViewController: SwiftyCamViewController, SwiftyCamViewControllerDelegate { - @IBOutlet weak var flipCameraButton: UIButton! - @IBOutlet weak var toggleFlashButton: UIButton! + var flipCameraButton: UIButton! + var flashButton: UIButton! var captureButton: SwiftyRecordButton! override func viewDidLoad() { super.viewDidLoad() cameraDelegate = self kMaximumVideoDuration = 10.0 + addButtons() + } override var prefersStatusBarHidden: Bool { @@ -34,13 +36,6 @@ class ViewController: SwiftyCamViewController, SwiftyCamViewControllerDelegate { override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) - - captureButton = SwiftyRecordButton(frame: CGRect(x: view.frame.midX - 37.5, y: view.frame.height - 100.0, width: 75.0, height: 75.0)) - self.view.addSubview(captureButton) - captureButton.delegate = self - self.view.bringSubview(toFront: captureButton) - self.view.bringSubview(toFront: flipCameraButton) - self.view.bringSubview(toFront: toggleFlashButton) } func SwiftyCamDidTakePhoto(_ photo: UIImage) { @@ -49,10 +44,18 @@ class ViewController: SwiftyCamViewController, SwiftyCamViewControllerDelegate { func SwiftyCamDidBeginRecordingVideo() { print("Did Begin Recording") + UIView.animate(withDuration: 0.25, animations: { + self.flashButton.alpha = 0.0 + self.flipCameraButton.alpha = 0.0 + }) } func SwiftyCamDidFinishRecordingVideo() { print("Did finish Recording") + UIView.animate(withDuration: 0.25, animations: { + self.flashButton.alpha = 1.0 + self.flipCameraButton.alpha = 1.0 + }) } func SwiftyCamDidFinishProcessingVideoAt(_ url: URL) { @@ -71,12 +74,37 @@ class ViewController: SwiftyCamViewController, SwiftyCamViewControllerDelegate { print(camera) } - @IBAction func cameraSwitchAction(_ sender: Any) { + @objc private func cameraSwitchAction(_ sender: Any) { switchCamera() } - @IBAction func toggleFlashAction(_ sender: Any) { + @objc private func toggleFlashAction(_ sender: Any) { flashEnabled = !flashEnabled + + if flashEnabled == true { + flashButton.setImage(#imageLiteral(resourceName: "flash"), for: UIControlState()) + } else { + flashButton.setImage(#imageLiteral(resourceName: "flashOutline"), for: UIControlState()) + } + } + + private func addButtons() { + captureButton = SwiftyRecordButton(frame: CGRect(x: view.frame.midX - 37.5, y: view.frame.height - 100.0, width: 75.0, height: 75.0)) + self.view.addSubview(captureButton) + //self.view.bringSubview(toFront: captureButton) + captureButton.delegate = self + + flipCameraButton = UIButton(frame: CGRect(x: view.frame.width / 4 - 15.0, y: view.frame.height - 74.0, width: 30.0, height: 23.0)) + flipCameraButton.setImage(#imageLiteral(resourceName: "flipCamera"), for: UIControlState()) + flipCameraButton.addTarget(self, action: #selector(cameraSwitchAction(_:)), for: .touchUpInside) + self.view.addSubview(flipCameraButton) + //self.view.bringSubview(toFront: flipCameraButton) + + flashButton = UIButton(frame: CGRect(x: view.frame.width * 3 / 4 - 9.0, y: view.frame.height - 77.5, width: 18.0, height: 30.0)) + flashButton.setImage(#imageLiteral(resourceName: "flashOutline"), for: UIControlState()) + flashButton.addTarget(self, action: #selector(toggleFlashAction(_:)), for: .touchUpInside) + self.view.addSubview(flashButton) + // self.view.bringSubview(toFront: flashButton) } } diff --git a/Source/SwiftyCamViewController.swift b/Source/SwiftyCamViewController.swift index b43b7ec..2302983 100644 --- a/Source/SwiftyCamViewController.swift +++ b/Source/SwiftyCamViewController.swift @@ -395,7 +395,9 @@ open class SwiftyCamViewController: UIViewController { let outputFilePath = (NSTemporaryDirectory() as NSString).appendingPathComponent((outputFileName as NSString).appendingPathExtension("mov")!) movieFileOutput.startRecording(toOutputFileURL: URL(fileURLWithPath: outputFilePath), recordingDelegate: self) self.isVideoRecording = true - self.cameraDelegate?.SwiftyCamDidBeginRecordingVideo() + DispatchQueue.main.async { + self.cameraDelegate?.SwiftyCamDidBeginRecordingVideo() + } } else { movieFileOutput.stopRecording() @@ -426,7 +428,9 @@ open class SwiftyCamViewController: UIViewController { self.flashView?.removeFromSuperview() }) } - self.cameraDelegate?.SwiftyCamDidFinishRecordingVideo() + DispatchQueue.main.async { + self.cameraDelegate?.SwiftyCamDidFinishRecordingVideo() + } } } @@ -463,7 +467,10 @@ open class SwiftyCamViewController: UIViewController { } self.addInputs() - self.cameraDelegate?.SwiftyCamDidSwitchCameras(camera: self.currentCamera) + DispatchQueue.main.async { + self.cameraDelegate?.SwiftyCamDidSwitchCameras(camera: self.currentCamera) + } + self.session.startRunning() } @@ -496,7 +503,10 @@ open class SwiftyCamViewController: UIViewController { device.exposureMode = AVCaptureExposureMode.continuousAutoExposure device.unlockForConfiguration() //Call delegate function and pass in the location of the touch - self.cameraDelegate?.SwiftyCamDidFocusAtPoint(focusPoint: touchPoint.location(in: previewLayer)) + + DispatchQueue.main.async { + self.cameraDelegate?.SwiftyCamDidFocusAtPoint(focusPoint: touchPoint.location(in: self.previewLayer)) + } } catch { // just ignore @@ -691,7 +701,9 @@ open class SwiftyCamViewController: UIViewController { let image = self.processPhoto(imageData!) // Call delegate and return new image - self.cameraDelegate?.SwiftyCamDidTakePhoto(image) + DispatchQueue.main.async { + self.cameraDelegate?.SwiftyCamDidTakePhoto(image) + } completionHandler(true) } else { completionHandler(false) @@ -718,7 +730,9 @@ open class SwiftyCamViewController: UIViewController { captureDevice?.videoZoomFactor = zoomScale // Call Delegate function with current zoom scale - self.cameraDelegate?.SwiftyCamDidChangeZoomLevel(zoomLevel: zoomScale) + DispatchQueue.main.async { + self.cameraDelegate?.SwiftyCamDidChangeZoomLevel(zoomLevel: self.zoomScale) + } captureDevice?.unlockForConfiguration() @@ -745,8 +759,11 @@ open class SwiftyCamViewController: UIViewController { fileprivate func promptToAppSettings() { guard promptToAppPrivacySettings == true else { // Do not prompt user - // Ca// delegate function SwiftyCamDidFailCameraPermissionSettings() - self.cameraDelegate?.SwiftyCamDidFailCameraPermissionSettings() + // Call delegate function SwiftyCamDidFailCameraPermissionSettings() + + DispatchQueue.main.async { + self.cameraDelegate?.SwiftyCamDidFailCameraPermissionSettings() + } return } @@ -939,7 +956,9 @@ extension SwiftyCamViewController : AVCaptureFileOutputRecordingDelegate { print("[SwiftyCam]: Movie file finishing error: \(error)") } else { //Call delegate function with the URL of the outputfile - self.cameraDelegate?.SwiftyCamDidFinishProcessingVideoAt(outputFileURL) + DispatchQueue.main.async { + self.cameraDelegate?.SwiftyCamDidFinishProcessingVideoAt(outputFileURL) + } } } }