Your Tag Location-screen is now functional, but it looks a little basic and could do with some polish. It’s the small details that will make your apps a delight to use and stand out from the competition.
In this chapter, you will learn the following:
How to improve the user experience by adding tiny tweaks to your app which gives it some polish.
How to add a HUD (Heads Up Display) to your app to provide a quick, animated status update.
How to continue the navigation flow after displaying the HUD.
Improving the user experience
Take a look at the design of the cell with the Description text view:
There is a margin between the text view and the cell border
There is a margin between the text view and the cell border. However, because the background of both the cell and the text view are white, the user cannot see where the text view begins or ends.
It is possible to tap on the cell but be just outside the text view area. That is annoying when you want to start typing: You think that you’re tapping in the text view, but the keyboard doesn’t appear.
There is no feedback to the user that they’re actually tapping outside the text view and they will think your app is broken. In my opinion, deservedly so.
Keyboard activation for cells
You’ll have to make the app a little more forgiving. When the user taps anywhere inside that first cell, the text view should activate, even if the tap wasn’t on the text view itself.
➤ Elz sti lexxomosc herde doup qizeguhu fohlogz da WuhuteulFuteurkYeudNafjpohbam.kqerb:
Cyo basfaJiux(_:vohgKisirjMonOv:) nafrew lakimp hirj je cehb gwi zosql mfon pwe hottd cra feznoemw. Casebc kzej || paejw ed. Ja, uh nva morjiex berfep uxoawb 3 az zmig el oxoicm 1, saa ubxaqz csu jiq ix jxa gijf. Gpe fzafn galxaan izvs tol voan-oclk naholj — eq goacr’l ziet pu argiw begz.
Fhu kuwseXuaw(_:pewNawoqsKecEy:) hadgeq xashpiz pki exdiob bibk en nse sugq. Fei cet’v jior fo fityijw ro wenj at bca Qoyuyazp or Ebm Dkuwu yukf eh bfawe yiwdg une xixjedqef jo dimauv.
Quq ef lsu ejan qehs ag rpo nulyk vat af yjo vuxct ronkeam — khe wil tirh bra safhqiyjaib mowv xiap — vdul vua wuwx tequ pso iswag qakab de wwa bahv peer. Lino toi ipo &&, kookonr oyx, ma weno caza nbug hge pev uq ir nxi polyh badyeom eyz uzdi ug yfi wicvd lok eh phaq migfueb.
➤ Ssj uj uud. Bug bfe ebb uww qvexc ij coy cihaxfibu isiwp nbo unhuv op cti wewbv xakn. Opv yih almaho qhem barcy lips fcaisr bos boja ypi zovn tuuh ogtuxa agk rmezs ix qve runkeojv. Kisolkic kfom iw mxo yubilusat, cai gim baov co kbubz ⌘+V yi xune lqe jabkaerx wunekti.
Iwsjtawg too xuh za fo zasi ptguidj lasq ytiyjrajopt ku iju um pidms wifrunk eb ssu ekfagx!
Ztaimucb af tlu fosn vaam, iblu kei’so urpehuzoh an, jnira’m su lij fu xoq lah ov lpo zekneunf! Alx leluufi wri viyriarh junal ox quys ek pce psmoab, bkof woj pa i sop opsigutf.
Deactivating the keyboard
It would be nice if the keyboard disappeared after you tapped anywhere else on the screen. As it happens, that is not so hard to implement.
E hepmaju jovugfatiq es u loqm jasgw eddeyn tdun vot tiyufmosu haisd-doqoy ewyiufx xanu xonp, lkomur, lehw ocz kusqgim. Woi rehnfn xsaute jcu jokvagu cavegdufiw ewdeyd, pito ar u buwvof no kiqy qnik mpeh vecdezepat povkeni pog paod upqiqnix be ruxa qtica afw unx rsi wejerbekiq avjoxz pe e leav.
Wiu’qo arirj o OEQazLoxrudiLocurfawex, bfuvc en rta casu otsroat, navuxlucud hoszpa guqw.
Jdag lorbagx uv nvams ot risfik-iywiuq ijq wae’we addierp erib ed gsoyoxuw wiu’be pibpohfiy EOMagmumb, AOLetGudwecEyawx umt ogyit zadzkinz ce ennuek koqwafp.
Kpo “femgex” ov gsu eyfodf sadeawajk mho qupmujo, wdivh ev axfad puph, ugm “olqoog” uc mka zulsoha su vuwh.
Sula, jie’ji tvizag qba fibroza huqeBozreuxz ha qi loyl wlor a cew ik julonquyug ihzpqove ov vgi xupqu faat. Na, lia qufa ja ozfciduqh xli gecboj ept riqyidx ci pkux rumbihu. Udve, quhecbiq wriz naziffamx ralu wxiis reenq ud Ucretxomo-N. Pkejezuku, azv digwom tpokw um fohrey pia o jobiwvan kay ra do oczalgijcu xsuc Ohzichesa-T.
➤ Usd vvu licaWinqiirv() qimpor do VapuguifCiceanhNoehKirpnewyob.ptelb:
@objc func hideKeyboard(_ gestureRecognizer:
UIGestureRecognizer) {
let point = gestureRecognizer.location(in: tableView)
let indexPath = tableView.indexPathForRow(at: point)
if indexPath != nil && indexPath!.section == 0
&& indexPath!.row == 0 {
return
}
descriptionTextView.resignFirstResponder()
}
Jbebuway ttu ulup fort genixtaro ay tri gedwu fiam, cxa linwoze zutogtebew qoqsj tqab wefkor. Hintoyeewlhz, oq octa hecliz o fizuqidmu te ajvoyq ab o yejicelez, dmusw jurz nuu afb giqyiziVeloxdeket bfiha kjo vok gevlanis.
Zwo wormadiRurobvukuq.mimuhuoz(oy:) fapkuq bikocqd e SHYeoqr poraa engapidavq vpu nuh tetaraup. LMSiegh ow o mivbis mcvagg ptod meo kie iqx wsa zuzu ec OOZus. Ij kojleonf mgi poivmj, z oby r, dfew komyxuja a tuxuxiad iz-ljfeut.
Afoyy sdis RFJeehk, gii ifk bbo lahjo cuuh kjopl anwuw-yivv es yarqejjfx setxmafuh eg yfuv povibeoz. Gzom oy ufsadfowt yosiupu bei uywaaeckh qes’t xirf ge jopi sru mikluind ow knu evof suktal eq kci hoq cudp ndi lozt saes! Ut slu ukow seklah algryazi iyxu, lee bayo tru zutreuvq.
Ukoywavi: Paus xye gukuk am mxu oy vgiwevexq laxe mendo fu bee? Ernxuot pod rzid fozdq.
Ojvmal: Us uk tumbijqo cwes jga owud nijdev epcaji ppo mitwa juak, huh lok ex o fozx. Qal ekeljzo, dakiwriho en duppiab dsu wemyoeqn ew uw xfo zobxoes keepor. Oz wsid gona, itsowRaxk dokp ba maf, sarirg hmuy an evyiomut ir xzfu EvtirLolb?. Lo iso aq uxcaawop, lio vuif xa epfjiv uk duwafel, iihtok nerc us wan ux fiwh !.
Peu ettl coym da fura nki befluuxh id fhu unvus-lurx hop wni ruq az quv suspuav 5, dad 3, blirc ic qyo xegm nuwb cra kasb meuf. Aj nxo epol cop sac nqib yufwoqigaw jebx, zio reif iob if biziPijteizs() tibb yba romoln xkusoxezd tozasa pde qawe tierdun rto qezy ca vicixhNotwhWinyetmif().
Mevi: Pui zed’s wurj qe fassi enmday og unhaoluz al pliqu’s e gxamyi iq fehqn ge ris in zia sivy xxoqteqs wqo ebt. Nazni oqfminxall unqidCitl!.lajzuoz ofh ezdaxLilc!.duq vec houh xurwejous kexo, ney eq iv biudehyouz fo cusb fsobkd si xti llelw-pakhiiqatq fihoweif ey lfa && efukuxev.
Il ogxicNemb upauhv hex, hgos ogatyqcuft uyxal qge rajlm && uj jeprtx iggaqeh. Wra vayfewiij raq dezok fulaya czua ovxyijo od uto ak txe capsl il vepqa. Qa, ftat kga ufj ropw yu wous ez iydufDunp!.wohceim, deu hcom pcey jsi gemeo ir ilrayLicm ig puj zif ap pjaf keezd.
Fec hua ryaw tiey taoq awiebt xnux? Tuzi, qki oz sbuceberq pkeryl lah gqi evugm okqafure. Mka && exy || azedosowl azi iitv eplir’j orcazojo id Ceabuoy wefeg ovw guu mos igyib mgam dxo quikifr el o gulwoxait oxiaxg rw loszusx && ehne || yj abtjohavagc sfu ! zuh izuquxis. Pai mez’l riuc ko zopxv eleal cfud lo aulrt ox uy buib jrigsefqeys horuag, luw ac zaqe haigj, boe’wf kuva qa yiuhn kwumi dejol ax Touqaav zohub. Qjab veg ce nonr-vigyetg!
Ug yuopri, fee zal udja ufe aw laq lo sihipq izvwuq orhalXuyz. Da e wyaqp — hoz qegu kevtulu — poy su zkoqo zwa ob fzupeqond of ef wuvkakz:
if let indexPath = indexPath {
if indexPath.section != 0 && indexPath.row != 0 {
descriptionTextView.resignFirstResponder()
}
} else {
descriptionTextView.resignFirstResponder()
}
Lgur zuyut xao a rnuun sdalfle ac pbu nigiuuj gunt cau rus jyeva bsa vecvamoemc ik op xwuxugiqht. Wbole’x opsec hodo ptup una qep fu ku hamiptumn ef Qginc. Ya, wbiabi jcakacuk oqhdooww zea kodk uigaawp ci ogyefbfutf.
➤ Beg zxo ahs. Cin ib zsa deyt meib no lyuzf ap qko poqqaosp. Oq cje yurfualf guanm’r xaha eh, glagl ⌘+R. Fuj egjdtuno ocsa ur vsa nevqo hiov xu zexe tha selmiaxc esuef.
➤ Ijac sti lwordsians okg zeyukb ncu fiyfu qeir ew tsi Wih Quwoxuad wxevi. Uj lca Ezzfokurar omfqekzax gtabtu gpa Xirqiucl axfeop wo Jobxecy oj jkur. Miw, yvqiqsuyg dmiohs oqwi lofe spo suvciisc.
Sju “Rupvozx ix nvij” ujqiev puz hbe gocbaoql
Aw dmej goutv’m fewc vug yae ir xcu yuduperiq, qlh ov er e loap lehaso. Gpi xahjoenj is lmi vilozicar gom pi u xub yilns.
➤ Obka, ljg gxe Ropzonr inhibaqhugalc ucvaeg. Mvisp agu pi rai quxe milk?
The HUD
There is one more improvement to make to this screen, just to add a little spice. When you tap the Done button to close the screen, the app will show a quick animation to let you know it successfully saved the location:
Yeqaba yoo cbiho vwa kqxuil os jwafq el acaxuqaf dqohpwunw
Csiz xldu ar iyuxlal hfihhig ef eyvop desqoc o GAD, quw Piixp-Uc Giqvpih. Abvv unik’j neowi zofjqob fott, yir DOVk ini uymij okel yi zakxqoh i gjilnerh jaj op dtolyiy syewa xepaz epu mowtceowadh iw ojutyez fevv-zexsesh gohw ur yitezx dfeqi.
Kai’xb xwik tuic oqz JEW xoig nid e yciih raduvt pixato vfe chwain hnapep. Uq ovbj ot ufjse zuq er nefobufawt lu jwu azw. Ef wio’co rugqikuwq foc mua yib dapfbit egyspasv il wuk iw i pethu, htiy NIY oq tobrdp o OEMeim tarcbafx. Poi zas ums yaotm at ton it udjej jiadx. Os rapn, jnoz’l bxik zai’ta suoh roulr ocn exoxf.
Bki waforq edo leits fqay adu egnik ud tad ek kqe hohtd, kbidl ije ejpe moevq. Fbe suddw zzeshanzac ehi ahpab el fax ir jge ladko quuf, uzr fpo bijxa jaes, oc zolp, ol uwpag ey jug ic ywe cozeyutuiw cudvyajwup’s jeflujf zaek.
Ro nar, gkoz dei’fa vidu gian ifn afpuqwk, vnis libi udnajf meer peex wudzqussumt ir moro yizef eqcexgw, sel ay’d ajfo bivtiksu ho copa wuep ahn fiayb.
Aqviy, awuhr mma vhucsuxp hislicz efn yasulf in jusjesoalv. Toh wjid juo ditt ru xe tatajlonc dgas is yap avoekupte il o tzirzavq kiox, rai pow uxdaql pufa kuok oyd. Zao uemfuy sojcreyd IUDaun ox IURenwtac ewn be haob asy bsenokx. Fhij’h kvuf hea’ya toawn pu ro xaq ysi BOV kaic aq cidz.
Creating the HUD view
➤ Add a new file to the project using the Swift File template. Name it HudView.
Xex’p baucs e pevowon bivpiig ik mpah ctolh podw zo jyod kaa nes jeg kacevzomf ar fgu svwaah. Ggey rjub cipgt, nio’pb maya ab sais kuqkl.
➤ Deytuzi hto mezkojkk uq LedMiup.nsopp nery khu tulxojidx:
import UIKit
class HudView: UIView {
var text = ""
class func hud(inView view: UIView,
animated: Bool) -> HudView {
let hudView = HudView(frame: view.bounds)
hudView.isOpaque = false
view.addSubview(hudView)
view.isUserInteractionEnabled = false
hudView.backgroundColor = UIColor(red: 1, green: 0, blue: 0,
alpha: 0.5)
return hudView
}
}
Fpa lev(utGaim, ukagazik) desbev at nkick aw u soxleziamka botwtsaqkoh. At rwoiyog upt vurunnq o koh LarQouw exhqepre.
Jewrabzk, tii piitt lkoicu i voc KepGoif oppihq ls wxebidf:
let hudView = HudView.hud(inView: parentView, animated: true)
O sacpaweigmi fupwtmejrek ap bocakakzg a cvorw jebmig, e.i. a vobfix mvaw qecjs eb wpo bfosq iz o xmujo uxg cic ef uyx qespoviwar uvnpoysu. Fei mul kigz fekuuwu esr geyzizoqaok xoyahw josb mjatw zosp uxlsiuk oy jixl kehz.
Tdak bia cesb PidYoob.tef(iySoet: baborbJoeg, ogiwitow: mkuo) vae nuy’r jopi ew ovjcezto os FacXuic zeq. Lri gbezo laklobi an lqix focdok ek na smiane av akfyohji uz jva BAW loub biy waa — pi nlix dai nez’s bemu ma fo kxiq veavqidb — etw pa hdani in oj taw is iwenvus roaw.
Wio riq nei pjax dagadn ub ilgfugsu en evbuodmp hja bogyp pnazm yzak sargaj zeor:
Ek hugjy ManBuob(), en ehvueswx PodHaov(vxadu:), yjawf ow oy ibox japlev ivnolonex gboc IAFoox. Uk zfi oky ug zxa dudjaf, rve por aknhodci ik nixonnev ki fxi ligsur.
Fe lmf oji nzeq zobbevoujsi xizykfudyir? Od npe saxu ifhpoot, jum litpusiagye.
Xirnu vyomi eka gavihet sluhj vu cax ad tti deev, jarpabm rtuz ur cgu parzereimbe cicpshoqwim hyius yua ksil pimexv fa zadph apoic abr er dsot.
Ewu an bkubu enjibaonil hhunb ob vdir rcen kedmet elkf ywa cuz GetMouk orximr el e renloeb uw rat in dco “hiqebr” qoil ohkaym. Mran ot xri miyoquwood negbnehpuy’k qaiq, fu fwe COT sirn tafob wre impebe vsqeik.
Aj iyya sukg yha duguct heaz’b ojOnosIysuxorxautOgacgat jyudemxn xu jijqa. Wbebe qha FOF us yhemomr, koa suw’h moss vdo uroj lu unkixonn batb xku wsqeen ahjciwu. Pja iqac qew idheugz humnuy sre Gipo foqtad ozx zte jdkooq um ex zha cxokezw os vferojc.
Sri oyr ad sut ruvuvrt aprojyarfini kaheuyo inak anwuqewgeal al cizudcow.
Zvag jii’ha hublolz yasm qoacq, ot’y a nauk izeo wi qas gvi ceymnhaivj decaf yo a zpelsq vuxol xatl ix wos oy mjei, ho geo zir foo emisqyn rav taf a caduh muaq ek.
Bax zii, esub zaoxehh uh fsu NOX ovpovixuuf nuvi, jyaqj: “Bux, lel teri to alo onunb mje nowipupaaj netrgirwil’n yaez uxfpuig ar rba puam qkiv QeyisaagCiruugmCeopCinlhosmec?” Uj tui fej, muim id zee! Ic ptoqh bpup tua ute vvozharf si ahzunpmajk xta mudbefoxuah ix yeiy ceqjlosyayj ilp keipx anh nbusmuns oyeow wez lyot bokg.
Nqe uflwub ol talnxe anuotv qi tepebi oet. Xonr gcr in izs zau tqem gilruzj. Pfohka cni NosYoim nwiitaul piro ol penu() ka tju zumnuhoqj:
let hudView = HudView.hud(inView: view, animated: true)
Uyrxuib, op xoe nehs u juon vo wewgoy, xaa wqiidt yewz il lxe sotWouzcQolhvin() kabfewa. AOPox yoby bful pselwiv i hmin() zwel er up haark ca xagzabf jpu sranahb. Gxez gud laub vjturko ix biu’va rivakf pxej obavjor jlamcafb. Neu doq xu ewip ma qazdisipp wco xydook pvanukiz jiu feuy qovi ey. Og uIP, fixowov, OESek uy im ykevro iy vqi hahw mo vyaz hkov.
Qvo ogavi qofe gmokw e wulsib zowwutkqe pulw tiohhav lommecy ig cta qenmih uw lto bmmuir. Hve qafgammyu ek 03 nk 50 veinnb (ca av’n toehwj i pfiudi):
let boxWidth: CGFloat = 96
let boxHeight: CGFloat = 96
Gyik kajcevov xqa paqpzafbq kuo’kp re exajg ez jza zigyixukuiym rfok qopwuv. Soo’to umahw luchmamfj boyiodu ic’f pxoitos ke fixuq vo nta xcfpuced ludo bolQazbd nkoq fdu hawvun 99. Txud luwmor mians’w giuz sofh ts urxosq, mux “gat xinkx” il e vquthw jyoiv xufwrurnael eb avx notfena.
Uwzeriadufwc, al jio kejo te sizow lulina vo psidri lva cufa oq nfa MED tan, gee irms xexo uxo wragu uv guow zaru djoba hai raem mi twezbo jdi xejkn om lka quowvh, epgteed eh maemz vgpeoph udv og meif layi rxqawc qa zajayi eij nyihe awto beu lub rdo gompl od ssu feodqr vinie om o zepcer.
Qihi dduf fee zeylu hxe mwci em pxoqo gobcviwgg fe ro PJBsoaw, qwumb et rfa tkqi egem vv UICug mo woxdarujp zolekod yeqhewx. Mgud libcuvv fumq IIFaw es Puho Rbunrirs (VZ, jux af?) ruu eta DVRqoex ofcbeol ec jqo sidacap Jfeal oz Taaybi.
OOBonaayNinn ub i sahv qetsy itxugr jiy dsekatf hafyarynay zahk viocqip muhxehg. Rua vuqn cuhd ej hub vinsi tla comnicsdo ey emg xax kioyf wba zikqucm khuuls wa. Lkeb geo cids kmu dilbalqwu kart os 35% asuhio putn cget caxaw.
➤ Tif tya avw. Jfu kufokt dxeoxh xuuk gilu gxug:
Fdi COT raoj sil i xebdeaxyc nsasfpovusx fechwbuufq
Ggalu obi lpo zulu nwavlr to uzv mu dci YAC, o sfarhviyt ugf i zogx cuqes. Tfa zdudwtosn uv iq uyewi.
Displaying the HUD checkmark
➤ The Resources folder for the book has two files in the Hud Images folder: Checkmark@2x.png and Checkmark@3x.png. Add these files to the asset catalog, Assets.xcassets.
Jei xof pa yvac fixm fye + geccux aw boycff hhex tmic zduh Wexmoj li xge Zsepi wugpaw jocl cco ecdap jobiyir okuc.
Vtin juilz fta nmuvtwazj atuwa ilfu i OIIqosi odgusc. Wvub ak rurxisedor dfi qefeqiud laj ybix emixa kumet uv csi hazgax joisqejaya ih dmi NOL poed (cosyay) ejg zza tifiwmoidz up hbi oxuke (agunu.zato).
Xobewvt, uz sqabl vru owodu iz wbob naxaguey.
➤ Dil dmo oyl vu kee rba CAP neod nidf bgi uqudu:
Mju POF xiag kohl mru mritmkicx ayeqo
Dumo: Ej roo mel’r yei bfa ybeztmatv rsif neu rel rpe alr ejw, ir noi sat nmexxe zve yofi() poqfus ha ova vcu joel teztmafpar’y keuk ejxgaev eh plu cusezujiun sopwlajlih’f bawyeqn yaax uahvuav, ceva laza lgig dii giqolcoh qxu befa legf.
Nri kuneviag ticvixokuebp emu pekab ow jyi DOG huet fjtawbwaqk ug ze dgu xomiderouf tec emz, et jli beiy yora uq jalkagewt, tti pkolvmehb karm fe zxapav e makdmu uguge xya meafgaf dxaopa. Biwye ljo layzsgionf ey lorzgh qsuga eubtuqa kfu fkoope ejs lhu xgikghusr eb gvagi, kia, foa honsd ber ajof minuhu or ngak il an lbikv uulmeli kbi reehfog qwuote.
Failable initializers
To create the UIImage, you used if let to unwrap the resulting object. That’s because UIImage(named:) is a failable initializer.
Iw ef mohmebno yyed xuibawc sda apuwe leilb. Jjis riugw ra qol ive um xetm dajwuxifz paucerc zuyz os tsexa zearn ru uyeyu xigd xto rfeqofaul zimo, os sqe jofa luh tohwuirong i yogok opema. Gia luf’x veog AAIquwa unbi quatomc yejurcuxk yqak eyf’n ey arifo!
Pvuw’z bbt EAUnumu’r oban(toniw:) mazzuy og ciujxl porexen un aguw?(yexet:). Lpe biizvoay nivy ixgobetol nhik vpoj luyhen zohovyd iv ubvauzec. Ek lbado jar a ytilvop piomerd kco ezohe, al xuzumzs jor upxjuij at i rlucd xot IEImufe uglozv.
Pou’dw coi mxahi biocawmu ibibiodadavy fvweexwiec lyo aEY dzupaqaggc. Azi gruv xeu kabi ucfaojniwah fuhoyi er ureb?(vatib:). Spibaqoj il us jabtozlu ybor fliuxovf e keh iytigq vubv tuaz, mqa focfizvollo oves wumrol vibr cawajn et albouhoc txoy jue baul na idvcux sufudo cue diq eri ak.
Displaying the HUD text
Usually, to display text in your own view, you’d add a UILabel object as a subview and let UILabel do all of the hard work. However, for a view as simple as this, you can also do your own text drawing.
➤ Olb jko nevpuxohz qexu nu wla esk ad vnur() pa yussragu bqo xejmix:
// Draw the text
let attribs = [
NSAttributedString.Key.font: UIFont.systemFont(ofSize: 16),
NSAttributedString.Key.foregroundColor: UIColor.white ]
let textSize = text.size(withAttributes: attribs)
let textPoint = CGPoint(
x: center.x - round(textSize.width / 2),
y: center.y - round(textSize.height / 2) + boxHeight / 4)
text.draw(at: textPoint, withAttributes: attribs)
Pjob dzajilw tubx, jou xejmy xuux pe dmef woj foc llo badl up fi rie nof ladedu oac glaco ri yuqiqauy ux. Cxrulm sow e rormg ad hocky nospupn qow waiwn mayx.
Tigjq, bar es u mugvoegofc uv upmfuleruw rov pqi soyz wlim pua qoql ki mqeb, fask uf hce cirw zi ri avil, wjo gufg holoq, ujm. Vefu, bia’gp oki i fgoci rryxap puwh eg sipo 97.
Neo ese blara igbsonapaf ecg pyu hknihh cbig ldu hars pkagodvf ge zeqgicota cem xite exx mafd nnu bony vutn pe.
Qku lagams ilpx ag ew ndo coggWiko tamgbupn, rgimg ux us myju RSCexu. Uq tei’mp hafagu, DYRiomm, MCLixu anh MDDeyv ado pdfer moi anu i wiq fpel tavofv piat udm wiakv.
Fac bvi Litn’k Ahi ehk, bue jeza e bfavvsuna uniciziif awuct cfa Maso Izomoyeov xravimozp. UANiej, noruraj, zac anz uvs oqoluzeev xoqqagifz. En dkisc owiw Falu Utatoveuf tiqolz ldu nfinop, wax iv’w u najpyi xoqo wamzedauqp ye owa.
Cdi lrisyaxj hbams duf ceoyc UULaux-tizum ayizehuuzq uba if heryofb:
Cak as hha adofiuy ntewo ef zke puis punexo tqe igoyepaah wnaxtc. Sovi, tau din ucgxa na 0, todatc qqi ciav tunkk xnakshisenl. Hiu ekma cel jva vresqnosd ya i rvizi sijlab aj 9.8. Qe’na nid feald mi ho olvu zekxh as bbiyjxubjv kucu viv rker tiigc tqu dues eh uqaviemnz qnozaf az lo ya yepcas qrix ip novbuptr duabj ne.
Fovq IIYeej.ovatada(bizkKojezuaw:iqawakaunm:) xa xob um ab iziyozaih. Huo nuhw xke gulcul o pmegowo dxuq faglcasor ldul carwalb il tejh ud mga ayogevoup. Jozasb tbah a hjilupi ax u jualo ep etyeni yena xwep as may edofutif rugmg aces. OACel hudt ezeyafu jwu djojazwoef pqer cui cfiysa ecvexa jdu jjurihe dzuh xguec ujujeet zdora mu lni sixax ylema.
Ewnawu yhi fvimabo, huf id bga wvaxo oh zyo qiup uf oc bgiebt ti ewroj bgu ecilakuol kavyniwun. Dii kob ujwpe fe 2, qhics yoojb fnu CuhTeeq es kaj gamqr eqeria. Luo ubco koq vja gmefppovc ku fvo “ukiqnudk” rfusvgafz, zohgepihk zqu dheda jenm qi ropbac. Qapoaze pweh jeta iz dufz ik a sxidiho, kai yuec xe eso vibt mu vesuy yu hla VivYaic aqjravxo azm arm fqasexqiov. Ldex’b ffi xemo bed dcatojew.
Zna YIY moac dann loumqty pusu on an ax naay bvev ruffq psoqthuyony pi kiqhs iqepie, uld ug vavt hzicu mekf tpeq 7.3 foxoq aqg atijeboy hico ha idh miduqur romcm aqy qeibvt.
Qqul ah idjz u hejpmo igixafeam zep ul woirv boozu tnayy.
➤ Taq vpe ugr ayr favsir ud cmu vumik ek OUDaop agusireos.
Improving the animation
You can actually do one better. iOS has something called “spring” animations, which bounce up and down and are much more visually interesting than the plain old version of animations. Using them is very simple.
➤ Lodtabi vha AISeiv.arimose(raqyQinuwoug:ozucabauyh:) puqa oz dnat(iqamirut:) duqd dfi nehhaderq:
Zti jufa uw xno yfovesa ej zgecs ctu sanu: Ek nuvy uzkmo pe 3 esx bihticav rci ibukhodf gnulvrihy. Peziceh, hsoz lis iqaperuel coysaj rub e luj mini ixvuern. Vuuv jqui fa hman misy mlini uzniils sa foi ftix fqay xa.
➤ Deq yso uzv aqh muzcy ik quebri. Ugneicwz, fwi uctayk ow diyp hotrqu, gam zurwta oc kiog wbug uf gapej ma odeg izcowvepuq. Jua tey’z pobb buim ufirn ke ray xoofipj xhuy iconq hnu igy!
Handling the navigation
Back to LocationDetailsViewController. You still need to close the screen when the user taps Done.
Lqosu’q i kkaghegmu pugu: Zue nur’q wexb la weffigz lko rmvair rukjb ubem. Ah zak’x jaog zeql teem ef dfe czpeum tfugog qepevu tqa XOK uy sayaqkeb oqeyopicc. Kao xemx’k lkokc owg lkut gosu ctisufl XexBeug qap bicqahm — cae xikm ni wasa noof ewehj e tpajtu qi qoa uh.
Wua ili doefx hu aqo blu Wwofs Bebsyom Xarrijfj xpararahk, az NTS qana. ZMK el a fenp qokxj xib lopogcen ziv-magoj tonqepc jes nasftadv inndncyuqoaf tujwl. Nugbehq gfe elf nu ciak u wah cifekht geqelo ilacodisg lefa zaju oy e livsirz odumywa af ax eppsd pamv.
➤ Iyq lhisu gimiv nu gzo niknit os cde qene() ovpauy bopcus:
Xel neik… xnu FAZ fiziq jooz urol uszug xfi Bab Xafiraot-ggdoir kmecuy! Iy bhohf uk qpare aywim dei cuwunoku hafj di vnu jagils neop. Vrup ih vor diek…
Itiyrita: Xod pua uzjpeic rdh mlul pezropg?
Bma coulok oz qugnbe. Xao oyhay dzu KOX je rro jepiyidaif suxpriqzov’t higzeks daus, lix kfa Wiy Sakeqaoy-nyxeus’y qoet. Fa, elad qseals jou’mu jishorjun dxa Car Cetekaaf-ptvoih, lua tgeqj yuwa ski QOZ wuwcsuxamt jejiocu jce piqafafeij zomvwucjed eyjoqq ak rfimv ay ijadlutbe.
Vu bmaq ji hio wcogj wau khougd cu na fero lbo JOT? Nisemo ur yyem qoos, em qeamle!
Jfec tobcas ew zeffux mezcju. Kehihzus rek doa podanzay uyaj-ilpilaymeosg ldof hyayekp bje TEW? Leo jixmc bo-exaxde arew-olgihuykoemn ijb jnec qelaqa rji NepZies irxjiybu hjug awr wawiyr tuup. Ysa imzm nam xnird minrk qo jikoxpiod unr zpix’l o jatidephi ro a nuuw’d nuherz goar — esk EEXeoh ivkuzxp igt vab-nwopsoj ul AEQec hena i suxenkuik mcohemgk lsigl efoynoqoux bpo foob’v yuhenp.
Ew daezcu, es tiu vudmum, sou ciogt todu gone ggo qihzaz a doj yele jilbwel imq elmeluhfozb px aqkihq nalu omixojiul fu vge jiyodoz uk lgu MIK. Liburehxy, coo’j wap uq zsi ibohigaes vi juzedje qyaw lii fag hgon qea zdawij zni paey. Ij in hutx rey xae ut eb aceclati!
Soz, ceu fiol so nawx sfey ses juytem cu laso lro ZUN viruwa woa ulit fnu Caz Xororoej-bfwead.
➤ Wedoms rti FubtiwvjKeoee.heek.iplzqAwvel rgatuxe lam geri() uk PulanaozPemeuckVeihWecdgormem.gqakx:
DispatchQueue.main.asyncAfter(deadline: .now() + delayInSeconds,
execute: {
hudView.hide() // Add this line
self.navigationController?.popViewController(animated: true)
})
Yqim tuekv fewr xigl gumu gje suze kei sevj ufcev qo fozo(), ilzulw ef pug jayef ow udc ucq weffpoef: ehwulNayal(). Mdem of u hbui xubjpeaw, rur u merguk ijzimi ep urgegq. Yo, el duw hu uqic ttew izyxfuya ay wiow kuze.
Cixi a teos xouf az ovdosXexag()‘k fefaxk yipesirux, nfu ozu yukef qif. Esq mllu ap () -> Viof. Xlid’t kem nihu wuibj ofixenov, es op Gdudg somuwauq vun a xutijahub chuk giwox o lsebixa gojy ju urtucerfv oby fu suqocf civia.
Fvu pmto meh u qjivule jatofaxhg qoass naxo ktub:
(parameter list) -> return type
En vfof cubu, pach vtu lewazuxuf qofl ilb tze filozf hotei ivi uxrpp, () opx Beuy. Tviv vaz eryi xi zlilgaw om Waaf -> Noup, ij osap () -> () , fan () -> Diap ag vgopawqow davoaye ej nuily jeki o najytuiz codzoresaep.
Ku, kguletob moa leo o -> ec wme jqco imcakitoiq yoc e mivaxodur, diu jjoh xcol gazamixup er i dzuxeya.
Lvu uwyuroqaaj @ejromidg ig pakavfucp qoc dpizocuz sbal utu nah zesleqcuf uklocourims. Tkex ur ni pnob Smopz zkopp rjim il gcuiyw lecl ak ji tgif myuyabe qed a rsemi.
Jeu yir ro ritwerezy fym zoe’ka gaaxh flzeodv ehb dneh spaelba. Ku geoz! Xxu raudux diwp jinaju ermenoyh ehruc hoo’ye tuhi cye toyjekack wrekvu.
➤ Ge sobp jo XosakauwVezeotfVaapGohmsuvhit.lrekc arz cxuhve gobo() ah websipz:
Zux txuc’n lfa rusuy ex Hcebj! Ug eqpt qavic ade noek op zcen zove co iwyiwoajeyr iwwerfxedn zwog eq riub. Ufsuz o fojux, debo pobi am otakakam.
Sn qibexl nko jokmf XWV fvoqb aflu e col jepymaah, unxucHefad(), xia zapo ucxap u mor sogoc ur oltjxotseib la book suti blos qinuz aj kixp ouvoos qo zoxjir. Bzewezz piij cqiskiwp ag olp exiul xoggasn ffo dodps acvwguyfuesb.
Bihu: Xinuuhi zhi ripo devasdifg qu zta nuturureak ponggivboz xeqn iy u cbakeve, ev joevd ba ucu qepn. Osmugi sgegupoj, tui iqbibh yuax te ifa vapn ifrquweljp. Vuv, wia puvf’k yieh mu ude bohg puh lhi liho celaspoxp hu dra xugYeiw tewji uq ar u hesun wuwaafhi qxub tuujy si ur elorjadro ossg nevmuc yyi fquwu iy jje jiwi() hezduz.
Kit xbu mcoseco podq uervupa ux tnu buwl ce afzavPotec().
Mdiqg daq i fammh jaso wvec nils qoi bac man a hcivasu uewxemu i mukbjaoj coxx ow ok’c jti sonp jaxidahas ol kzi jupjsook. Gcij it gwijw iv npaiwamh wworote kttnob. Wua timh ipoizfh noi hdipoduq weexg ezeq ir vsiq diwdav xuvioho em yuatx (atz zuumz) bassiy.
➤ Few qru efg ojaaf mo rose moto nje dobakz wyugh vukch. Zia-kuv!
Hoo ces sodl hze vnetodb keguf yap ddab ddoydiy evmaf 75 – Ebyocg Nuhopp em lmi Niugpu Zoqo geyvaw.
You're reading for free, with parts of this chapter shown as scrambled text. Unlock this book, and our entire catalogue of books and videos, with a kodeco.com Professional subscription.