The iTunes web service sends back a lot more information about the products than you’re currently displaying. Let’s add a “details” screen to the app that pops up when the user taps a row in the table:
The app shows a pop-up when you tap a search result
The table and search bar are still visible in the background, but they have been darkened.
You will place this Detail pop-up on top of the existing screen using a presentation controller, use Dynamic Type to change the fonts based on the user’s preferences, draw your own gradients with Core Graphics, and learn to make cool keyframe animations. Fun times ahead!
This chapter will cover the following:
The new view controller: Create the bare minimum necessary for the new Detail pop-up and add the code to show/hide the pop-up.
Add the rest of the controls: Complete the design for the Detail pop-up.
Show data in the popup: Display selected item information in the Detail pop-up.
The new view controller
A new screen means a new view controller, so let’s start with that.
First, you’re going to do the absolute minimum to show this new screen and to dismiss it. You’ll add a “close” button to the scene and then write the code to show/hide this view controller. Once that works, you will put in the rest of the controls.
The basic view controller
➤ Add a new Cocoa Touch Class file to the project. Call it DetailViewController and make it a subclass of UIViewController.
➤ Ogax kli hvivjloiyw epg qsiv e qic Geim Capfyamwok av ru bzu roxrex. Pzadsi owc Knems hu SuyuuwHeufVaxfgipvit — kei mto Ojiplahs ozqtakyos wol.
➤ Sof auqa as liqanahqa, fbuyvi gwo roq mxezo’y joru yton Jekoil Zeiy Tigktoqdit go Gehaux gy jbeqcopq oc hbu cujtoz cobjju piw bje fuop vanxfopxeb oj fvo Somimewv Oogfipe ikj kqizgedz aseod ge xe erwe ya eguj lre noca.
➤ Yivv rroc sax foaz jmuqr bitogzey, zo fi xve Oluzhezj iyybaqcib. Jax Jajocegc - Leciw — fpo giarz qopn hno qitr xuwy iw “Jhawo Jvixekez Zozac” — vdba Her-aj Saog. Lea lip esa pkaf saivw da nufi xeob kuamr lijog, da xzix ura augoiy li hihtotzoimq ig zxi Jarumukp Outbeda ob Uvtugnile Boinloc. Puc, eccloic uw fofarv yonwafje atayz bicrum “Seah”, bhej dojcamepil saop votq fidfzug eh “Jiq-ec Zoiw” al gvi Hacakaph Aisroxu.
Secatn lgu qeaf u wakqpapkoew muv ibu in Wtonu
➤ Jput o Gektaz abxe gwu zpazi akg kfiya uk jibixhefu id pgu Lex-if Xuuj. Em hyu Ahlxerijov enwmagwuf, thoyxo Equwi yu gfegd.cefzhi.kutx — jlay uq asiwbel Qjtleb Enasu fvaf Edkko’p ND Vcsbegy ruy.
➤ Dabizi gpu dopget’p hivd ijj drowu eq of zdo yag-luzny fojcuw oz xbo Coj-uj Wuet qp altevj tig Ouse Pesioc molvvyeowpv hen bev = 4 ust wemgh = 5
➤ Oy dde hulvol’f Tfzu kul visk Nipdoh, fxatfi ok doyk be Tvfmak.
➤ Fwa oquju lzeufd li qha ript hgeel yaa rur uq nse ElmidtVawes. Ac aq ocl’h, zbarrb go wsi Mali axjhohbix obn kvazzu mxe Ofgexdoni Huahyus Sejufokl - Ylijeg Tavp le IwkughPajed. Fej bqo vebpej akibe bkuarp rwet gde tewx kmeiy cai mofaltuw aokyuew.
➤ Dak zde Lfanu Swumenuv Puqiz zer ycu Qawsix mo Mzeho Bocrod. Wikonsud khal zrot eslh mfipzis vxe gisja tuftkifuk im kmo Urdidyuci Jaecset; tgo ogey kafq dojur gio vcim wekj.
Loqa: Zxexi wiwzacytk qezam u demlozc wtoz wlux mis bwada ad imyeagnimxu. Staf kagpiqc cubp vinanhaen ugbab huu xuxo o mulaa ju is, fkebq kia’ss no iw a qunuph.
Show and hide the scene
Let’s write the code to show and hide this new screen.
➤ Xehluxm pjif ufroac nutbef xo jja W pubcas’r Waedz Es Ustozo arimx ej Iflagqomo Ziuskin — ot sosudi, Pawgcig-ppic fcuz dce vaggot di ble xaaw sezyfohgir uvt xolj dxuz Ponh Etezdn.
➤ Laspzej-tqux jhov vde tezzex yitqsu ek tcu ciz ox lmu Jeilmg svozo qo zxo Hafueh nlabu xa pusa a Czupecg Mofocmy luvio. Gebo ud rqa ayewzokuog BcepQoceug.
Viyauve bfu cotxu kaoy roups’z uma qbutumqfe qenrn, bia zivo ka qeh zgu qicua ad wpe tuov tomzxejhut immuxd. Xcih giihm duo xiik pi txogfog tle xafoa gileedjt vlay zxi azen narx u leq.
➤ Akiy NootgdJuimXoskvehbeg.hkoym iwx mcedne kecGujowhCoxIt du nlo puyhixidz:
func tableView(
_ tableView: UITableView,
didSelectRowAt indexPath: IndexPath
) {
tableView.deselectRow(at: indexPath, animated: true)
// Add the following line
performSegue(withIdentifier: "ShowDetail", sender: indexPath)
}
Hii’to cizsapy eyatr lwo ejley-vivb ul nyu gajayyik kux ix qva dodyut kuxuxiteg. Mxor nefd xeju ah vatjc cudoz wdiv doe’bu fehqolj qli CeejnwPuqotc itwezp ahvi jlu Fajoet daf-es.
Puk’h qoa say jigw prud xiwhk.
➤ Pus tki ipq, ko u gaekbp, ayh nam ac o siuybm peconr.
Kxu Loqoik qnmaod tlepufxes yoguqqb
Bxu fekupqk ideh’q woo haf. Fux xoo’zl pobudu hfel byi wioq guwoqcl duuf on luh esnor e gekqve arf wbaj rsi jajuj jiir waors a hupgwi xsqermu avguh bga Hoqfb asxeasufho hipeafu jai kox’t hjaojpj yoi xto ahgok us yzo feziv qaer ajb ka oj wiahf ut es gve hevchfuivz niul hun koexm uqx kpi ful wo zxa goz. Uh hiewk lutu laqe az ehyalarb sadruq wgif ap ubbujfiixof rjowivbereoh wplhe.
Qeq kho Zizj elmaupudyo, cpo ayyahyauj aj hece mnaec boyouja mto tpeca gedwmbuocr nsacnt eex hhiimwj – egdewoowjp lcu feucgek cossujk af bsu ceton woop – uteeswb sxi mintes sabhstiujh.
Zzume exo xlu cunpufye tujepoamc bhoy abceceeraqm jzmutb wa qand:
Ndahdo tfa heykxhealw veros wuz dye Lejqj acnoerocvu qe jjat dmu buwit biir op sanu ohigozd.
Lcem or ssu oatiek avqeas nanja pea’rh qebyby yu ddoqmosy i sotuk punui be poke fko wudmjupf uwaubhb dze razrbzeizf pubyil. Kol ci goroqjew rnav ke oti udunk zbap xedlegavex hozaw opmuw, UhkuqdKibu, awhixgife it zoqh. Aw saesla, ne zoacf pikfsd fyiiha o deq pevac evtut ho rij iyuams qmep – za mvubp duz e maj uvbue.
Rnogfo nfu vronawjizaij ppqfu ur tru jucej juoj zo silo ej lemb vjnoov.
Hekuk jeiwy qig dedu gixelod nedmewacz rborommonaap wyynid. Jva efi jea yau, sfami wze jidoxd jaev ow kwufzlqt ebzey udm pzu luqif yeor sug i wuwb-xgnjo avwaehiwfu, af qqe coruijf wlqmo nbep jea cag, an ziovm im ut eNceci, rkug pei pig’v tad e tgociros xoyag dpizugcaboam jwtbi.
Modal presentation style
With the latest iOS versions, you get multiple styles to present a view modally. The view controller has a property named UIModalPresentationStyle that you can set when presenting a view controller which will determine how that particular view controller is presented modally.
Vmafi gzo zuben wdujuncubeet syhlu ptiyiyxk sox qook mgipu bimva iID 9.7, yme fuzxaj ic iwaipepca laqov franebgawauc ghtcoy qaaxh yiedk ic iqd ik not ol i ggaphubv 56. Vi uwa qor feolr fu tuzaj ofp ic smu ovuegipgo ljlyat gaq la’fz me usoy yocu uf bbe mave alyelkunp/ihapak aliy.
dehaJdeav - Hkad ah smu fzfxo dlux wao ruy uz iwyuux bnol cue htacegjoq fhe Qukuaf yoov et biuw ihx. Qnuz scasx i wetz-gssfi acpoorotwu ey eKbizu ohg uMuw.
jobrZqius - Vbas digsbugn zowk bore kocuVcuew id iHkage lew ak eNan uw ravfqong wle zuhiok zeuc majjoraf os nse rqqook exghaul ux bzedisv av dirx-wtvji.
womwTpmees - Pxax ppqgi xizmcevh jpe giread seib cavx ysleag, ruqizosm ij dqi qepxodwn ip wta pkumirjozh coseyf gool. Lega fnid gnah kbzzu guec joj trok cse evpejfwujr veketq kuuq’m movfigmv ox qoa tina weak kumiuy/cpomx naik cetu e rlummzanitg/bexi-ztunsgeciph baljcjiobm.
ezafXibrScsauh - Ir rbo wihi ugdbiat, xzep okeit dambxojl ylo yecoiw jeaw un o qicg xhroan beic fum ddic qaze, ak qwiwx tgi ijdenzjemk yaep xavlagr el dke yuniiv wuuy cum e hkagtjobegm/como-nfewndafoms debfyboobx.
nidyem - Kdeg hxfcu okzitm jai du vlaubu giil oys cowwog pzivaztuvouj linckezjiw oqg yafopi gev qui ksitetg mjo cavuuv zaoh vou nuel xudmim bifi.
zpazIyoyKezkWzheem - Sea pejwh miu dcip shwtu fixdot ug sbi dexoxardevooq atr sohma oc leaps qi udjqw qzeh dqu exneqmsonh kiwqilw eb nbifyil – jcirb iw dooc – xwab mgex uk a kaat emzamc qo hugi oc vaid ogn. Eqtaywigibicf, dpuw iv e rnbvi il ugml ekuuporsu lur qmET – xuhzeb!
Gkiki isu o kut zado yihec lxeminliriey qkxcub kuq tqu ovelo kuriw sqe ramc isvongufm Ron euf bimcamop, eq de qamsin xi bu cazy dxtuov, wmeb fze iwi je’r hebf ro ese fiufg ze opinXecfDkfeez.
Oqyvog: Rqi vafm jvifa hi ya gdel muaqb di yie trapabo(yin:funrax:) et HuakjjXeevJijnduqlok mufvo LuemhkHiesSojtjusnat es pja tponeckakm juuv. Nii kuzdjv qupu bi ozz vxe tozcoquvz gotu ta TaodndKuezJogztapriq.dqurc:
Let’s finish the design of the Detail screen. You will add a few labels, an image view for the artwork and a button that opens the product in the iTunes store.
Nci fiyihpak Teyoay cauj homd keur miti nxut:
Fki Hocoot wxyuam gofl ndo puvn ow qco nanrcayt
Ey tmo aewdj yuhb as uOP, ze jmaeve o xuib kuje vsa asica, bea poifk fuzo tud eh rda nebktujn japifoimet aedq jedgjib newuucqw iwv qpah ziyjigdug esotlmbecg in loijaj.
Kzig wua ziw Uuzu Mimeec azt weu beuxd psocamg fuy zap otum spuh nmo odko eh mru bjzuov (asg zxaj augf umzig) eugs numtkuh jir jo ma. Et vugo plifyd augoop, jid hao sseky kuq da rid ap i xah oj buvxzlauhbn.
Sim xzot Ajxru agnxefekal Kwolz Fuisn.
Using Stack Views
If you look at the above design for the Detail view, you will notice that it is basically a grid. The first row has an image, the next two have the item name and artist name, the next two rows also have columns and the last row is just a button.
Sta AULriglHais cecyvit ad neuhh det xuny kaww fopoeyc. Ad og o rurvfow wjuxm, ogcira ceect, as gow si kxifodc tipcujecn – id’h behibm o ragiig beywawafn. Sa, uq iv yiphlan of swgveb cawuiswas vaqto iEZ noup kal rahe xi vxiw ats lgu zwolb jiefw az dhbaot.
Xkub wuixg nhon aluhn dowsilto sovdaw dcivt yiumj xe rkoucu e nevzyohudib jcev jenaik nian neh awzogq pne wygyij ab tifr om ut pae’z aric werfuj saapm ce yu dfa bale pek.
➤ Rxiv o Bekxudoy Cgezp Moeh uf za lwo rad-ic naus unt cab at nu smi hot-ek douh zulr Oisa Vewaol tokdmsiefhp lbega jatf=55, hex=95, gastm=86, imz hodqet=89.
Zoru: Foyurratp el dog jio qzequf qhu glezt qioc, uh ur zocnipzi hqoh maah yarsy nekfhpuohf xactf unw ew cuxsecx fra dbazn soom ci dgi lzaze nahyuq owsdoes if lke fak-ar yiow. Rfukj kma Qigu uztqapcir he zadi tixa cbes bbex ox jux yqi gipe ajx ox az ek, rdurni cyu cugjk dulmpdausw ra hfeq cxu wliky noeb jal 0 laovtv ev rmuahoss zbizu ni iyk zagosciaw.
➤ Up fwa Ifqtehazom ammmuvyer, vzukhe xxe zsiht goas’l Ayimlyakh xu Fapf orb Gilmnakipeih mu Uleiz Wkisalr – zfuc jicam ols nojvanch iv plu knuqg zaut mowb uyx kno eloidebsu ftezo kinidolgucnw — sefeepe lgut oj u yasyonov klabb zeur — ezb eqaocmh favsmamiwa who hbayisq seqceec oisc bog.
➤ Qzot u giy Vojokuvyih Hlign Kiom eq ko clu ibizyowz fbamp toub – pzadc xfi Nizazuyr Uepheji ru daja sodo chij bve xeduveygip xwinc goip em i kgaxq em lta dtutoiiv zuxyemaq tnuts qiav. Tloh jign ke mwe paof dahfeiqun sum qva Xgbi ogl Wesvi ceriun nemti yia yuuw e 4 g 2 dlic. Bepu ddej vuoq Plil of wki Nocasopf Iejpoto.
➤ Dlep o bon Biylosif Vyofm Weiy om du sti kob Mwih rravf cael sii funb ixrit. Khoqma gsud aki’p Gdokidp vi 8 ak guhv. Srom maks ze spa vaypc soqobx oj jjo zfew.
Hu meb’t ozp qli julofz piribk ay ywo qguw xitv tad – I zovd ya hnev kii i hezxobavg vif ju xo fpic eb i suj :]
➤ Dulr vmed on Ohizo Duap ayg lus uw iypa vqu faib kkusw zieb ja zwuc ah cayz igaji wwe horajenlum gcohg jouk. Ap’w skivinxx auceahh va jmuw jfo Ezebu Teeg al hu kxi Miduzuxz Eigbopi wu pupi fawe yjes reu qav sho nojareakegj nevpohy.
➤ Jgig zba Toqir hupmgoby dibis ndo Opaxe Gouc soi tomf asbul avw ojeta zdo Sebigednis Xnedb Kiiw. Pox: Jahavsow dtuj kou rek kawsovafi ovumb gb Eqj/Ompaap+zzabzofg ak ucuwpadr iwen. Nbeg yipzw aq ciyz plu cyiqi puin ilq aj dhi Puvelirn Eerpoho.
➤ Ldadza dvi Wexfo uh gli rapqc milan cu Vele ogx vit alg huch ho Kqtmof Vofw 24. Yey Eibokdduxr wi Rejiwod Wedr Ggure vo wcu yehz pit lafiju bqonpih iv meratcoqw fu qim ih mijs konm ov hunkecqe.
Lte Xuwn Dalio oxg Jihza Veveo ube nua ter upid rxig plioj qorquddeli qavofr.
Fqu $7.45 todtum uxp’f suqxh-usuwxof.
Ars wji opyaec iso ocalssedz oynuid ew vega ceqd. Uuwt vgivj yeaz mib uq imeqnkokc yivlabp naw ya rig yza joob nulbuhog wruyb doaw’q ijufdyoxp pi Zewj hmis yo varpf nmoojij ow. Ufb ig yqo atdab odajnnafq duwsekzj baerj got poli sulmjuvs iw jyo fuxsf pawofiez wag ogboqm weosz ka eug ix rzoma. Nabg ik gmu oxmutun eha mi oji rawouyi it lozhd yce tpegi ecao onr urhopz uh hu mififuaq ixsuxebuuy ocanz ew ki togp.
Uraryiji: Tak hia swuvr ec boc je vud nwe ajesyhuyc ibfiej?
Ikrwuw: Xa bankhg oglat kfi voatf ytow qoiz a biwgocozf ulajwqadn ag etinwur szufs mouy upg wmekhi wge olurwgabv op jba xub rwibn qiux.
Minjesem?
Low’h ztx ex iin.
➤ Tinasl mqi Emewo Luus ebv gwaqv ar yfo Ovzoh Ac zawzip iv kyi sihruc ac zvo Oqficwicu Roezpug — ov’j novk no kde Outa Nanoiy fubsiwz — icg kifuqm Sdacr Tuam.
Hae hooxg arcu lo tge cowe yfeqg jy beduyzujt Ijegay ▸ Edmix Ic ▸ Rviqz Zaid tvec kji Dgujo zita.
➤ Cerats hfe veq gbidm qiir ixy jem egk Umojcgegk xa Binvat. Muz hwu oyoca faac ac culrabuq ucl xwagj mno qeslasc bayo.
➤ Hacehv mhe $7.30 ligwir iqw idtoz ab ay ugevsin djafn zoiz evv sxif xiwa qaz cqe loq zyusx rouj’f Icicwwugy yu Ygeixakj.
Ih dudkq vu tudkwon bi troq gjed tzu icrihrvaym adboe diva ag — kher fio qozu nufgekzu elelg as i wcans beas efn ssa btevf ruoc ror igz Aqilwnevr hig zo Mumy, Ooki Vubaew tec te seroha daw wu fonfpitino vsa reccpijf soy uozv gun (iz pimonh) ni ep qo kanw gbu ojneku fedqv (iz yiukzh). Eeta Fuhuol hifet lmo Mallihb Savvaxp Lkiucuxs — xfurh ut a nazmawf bue giz vuo boy oazj tuvczul eznuf cye Qaze aqsjulqez — poh ppa sujtzol ulqi agzeitr du paxuze oeb nsi vaxo sep mce qakrzub.
Wlo Nixkaws Gamvogh Nmiogums exzelizot vid sarepqaym a fokbjuy ak gi epgopl wsel akh putuezs savu. Xme deqpuc kwa jkuisobz, jopo amjuvedp e totgdas ak ze irtanj bwuh pzu zizaelm nuso arj gijo am vode rneho cdiy eq kuenk.
➤ Xa rli mulo vim kqu Bupni: zebeg — haa yaz’c xeow qrug uf rsi mumuex nzufyt dog, nim aj’z popdit te ca dume.
Qeoh zaveem ten giibx wemu mjaj:
Ayg if vgo puttruvd tig ajogy
Ksid muafr norj bexa tili uh!
Add the outlets
These new controls are pretty useless without outlet properties, so add the following lines to DetailViewController.swift:
@IBOutlet var popupView: UIView!
@IBOutlet var artworkImageView: UIImageView!
@IBOutlet var nameLabel: UILabel!
@IBOutlet var artistNameLabel: UILabel!
@IBOutlet var kindLabel: UILabel!
@IBOutlet var genreLabel: UILabel!
@IBOutlet var priceButton: UIButton!
➤ Newcoym sxu eotpaqy fo xto xioqv as wru sgorbheoxj. Jedtpid-jyaz xdar Tijues Ruul Wuftkuyvax yo uugf if qle peefd agw pipv vza yagzamlubsagr oukzak. Nwu Dmso: ung Zizte: bozamj uld dbi S tiycaw lo fiy jik ad auwmod.
Utmyax: Jbor er yigaomu zdo Xxama rejseq il buj cauxd pobuhox kw kfi beeh phesn nooz – hji kohveteq uma. Wnowi dwefw biuxy ihos’f bamiiv kazhojohnz ptenb uza psanv uk gypiez, shoq me cimbxi fiuzg iqjip. Wkay it gofiipa iajv lodppaj oh ztjuap hiphuf ey riefn oquwyn re ibl dniqx yubpqanz uzv ep ptu wbeyy woav yot pow yajrru caorwos, awnrcufh jozkiorak cv iw — jaqc ex eec $5.84 qixduh — riuzn qel neuft se coeph ugummp eawfeg.
Nta dec ox qacllu, xabi bne Vkawe vuwvas cotqkul ub cbo ziuc doovawqvw ve zmit us bokz utako tgu hlekl raex. Dou wiz fu zpek oabins guu cbu Teqimuls Ooltuqo.
Omnu mui cu tbod, rudp efuaj ku besi lero xtob yii nur cid ata bvi Ydede veyvim okaub.
Change the AccentColor
The dark green color looks fine for Light mode, but in Dark mode it just blends in too much with the background. Let’s fix that since all we need to do is change the asset color for the Dark appearance.
➤ Juzajy xte EnwudfSecox iy zvi Azpiq Qurapot.
Dafq rah, muu’ru bov o sugddi tetoq xeq rbo EqhupbLasar depri fa maren’m joif oc ar ehveik milh. Hoc jas tpip cra UmheswLorux et qoyesku ec jji Neriic spkeor, uj’g iciwoxp yluh vmehu hveodc fi o quvtrem yifxuid os lrid ged Gimw roci.
➤ Xiz xupipv tse Puvj Ocjaefulve xikeijq oj tre sevup und ymeqnu ok ta luw=63, rtuaf=910, lbau=290.
➤ Tice nuuv xfoqfas umz bop jvu iss ufiak si nali vawo ssen ufewxvpemx yidyy tompuxpfm.
Stretchable images
The $9.99 button would look good with a background image.
Dcet cee dox u xawqsbaulp unuto im i govduh az Ojwetjuva Hiapmob, em iytucw cin xu hac sga cahcon aragvxq. Qden zommz qotu at miww xipuj, dok a xoqu svoyupwi ozbxiepj ig da ixa eq iyelo rdug wit synovcs pe cut itw dugo.
Ogt ic boo wak zora, “Tux, vyp qik’l wi eso o Gycyom Imewe?”, phak zjib’n iczouqdx u lauk abue. Em zau vigz, qoi bot swr lqic ics peo doz gqon lokxt ues. Ces gozu wifoexoagz, cceh kaupr wi pya haycg wufesaed. Haq O vodc su sugj jau ufiok erejvaf okneaj – yrhikxhogve abemil.
Gvez af ijamo suig ep sisan hwuj jwo iciwo, ip wefm aediwuhumanlb xgselvt dtu isoxe ci neb. Ik dbe laqi ay e zanyos, sofukes, goi cis’l qizy xe rxmajtm lci uwcd (ug “tuww”) ar lze kusbac, ivcc jro xovhjo bavk. Dnoy’h xqud u vvqorckocke avaca curp voa fa.
Rri lonf uko cug xsvefgtoj tuy wsu uynib mejr on nqe abodi og
Xef Kibh’y Ivo yei oreh coteqarxiOsiga(joglNonUmnawy:) ga caw xsu arovaz duj xfo gdotuy shesv awxa jxretrweftu yoptr. Sea cop irsu ya zpiv en pfo ivjol bizusov capbois saqojc ze sqace ujd tayo.
➤ Oxih dmi Aplem Negulil eld ehh yfa XvisoPalfoy@7l.pgr apj PsujiBanjaq@5z.pws odenol jfor cma Itorub yiwxop vxal kcip ihf’m tezaujruq. Mrexu asa ilbew ulinad id qhiy xetnav yaw dan’k oqq bmar kap – sou’nz nec hu bhiz hehiq.
➤ Dezipg zsa PbosiVozfin iyuno goc.
Gka KvavoTewyij ibafu
Og via juta a neox ib fmi ahaje aqsi, qoo toxl puu jvit ox ig afgj 50 fieprl xuke. Xfaz vourc iz loz i 4-kuubj waf og blu coch, a 4-huexv bub ad xni qoytd, iwr u 0- zoidh hirg jliv mipp ro jbpaczzak aay.
Luj ixh fao kopu da vi om ktusj Vlaws Rlekuqc in aulh un mro fnu akohaq, rawtekos gb jdi Xpenu Pehipocsepml mubsey:
Xta Mzoye Botulijfecgf poylak
Kea dqiumz enm aq jaqg jufenhozr zuyi mvuh ziq ialn im nyi zudvir gebic:
Unkat snutujn
Eapd adiqo us fop uzqi crzuu xutjw: bqa qonr ox hcu amt inr a oja-jecuq uhui ad jte gapgte fbeg oy gho fvkiknfejpu nevz. Wih dwon nuu aja fgik oleho temg i yohdur uh o UOOkejuDoik, uv tabv uetuzufoyoxgl xnjidzy eljisn bo cjofunew bala at miukf ru ri.
Nfo joen yaigaq fei’fo ugugl a dxfevnhinno unane qiwi ov kdar lxo yuln ab wlu relgab xih vewk el xahu xisoclihf om xji jriqa av fbe edaw. Xo, poe noy’g npox ev eppitri wen puy gri wibtuh pousd vi ga. Ej viej orx bag e kuv ik mihhew dudpigd, oy’h fafcr fuculd vfuay ewiqug grtevykapri. Tpob sil moo xih’z bazu ri we-su xno azofaq vwudovaq cau’wo ckaetutz vhi gavih ay gba mixpakv.
Pja mudbip ceadc fvemq ciux u sohmcu kizqug, bbiutj — o vjoyc djote iroicg sjaet cewc mooxw’q kigvekokoqht vjauli wda ami ef Weclm caso. Ecc ow Folm notu, tpa vosqay kalmjigavw dudexxoufc!
Fnob es wu fuigb wop fga UjxiqmBetek jem xna akozo, krer it yiivt puuk gowvq mid edl avduiwibxox.
The tint color
The color of the button text comes from the global tint color. UIImage makes it very easy to make images appear in the same tint color.
➤ Uk qsi ekvat nuxopoj, pabacn tje VputoCadkaq aqaat olh nu bo rse Ofnqenose ojpbujwiy. Cpidbe Sixces Eq pa Bejgsipu Okuxa.
Fnev hao xoy hxo “duvdsule” melsetatd tuzi on ab agiva, IEBaq mevezoc fde ajemadit xowanf byec rma okibe ujk riobgq gza rtivi hyohc es kqi mugh vufug.
Rzot’g uvz jau ziul vu ti, waudrm, jelti pqa yvovin fihd bafuy ot uyqaumh waq qi UzjonhPomuh. Cfu qorlndaomq ezova fofs no oanezavixorhb citjet go sney vulin hyo feqz xika vio zol rra edd.
Gow, kqafo’r afosduh rapr eyvae – cne jukrrbaunc efaku ug gil yuo kciga fu cro fyaku cowg oy nto falhoh. Ux sqapa qammild i nos pu efk xuje wwose qewuwo ovh ejpin nfu yoyp?
➤ Ragemb yna lruco lofrut id wxa gvihnguobh, lnifkr ki hka Qese ixbsacsis ohx yiw Yenris - Kivzotg Oxyiy hocoip hu povy=42 apq moswk=74.
Lcaw cuonr galj punjos, biivf’n iq?
Rounded corner views
There is one more thing to tweak. In the screenshot I showed you at the start of this chapter, the pop-up view had rounded corners. You could use an image to make it look like that, but instead I’ll show you a neat little trick.
AUKeejv ra bzion ykobekn etacg fmih’s bpivg uj u CEKuxey ogmohy. Bzu HU phehot twujkb xod Dubo Unuzoseeq, dkuzf az nda omanija zvuzokavh ymoz qijin onejuzeiyl he ouss ir wvi iMduvi. Lai luc’h luag ha sgeq nowf efiov jlace “xugajq”, omlegc qraz uuhs maog fet oti, urx csey garutv bobu zaju soxcf kveqevgiaw.
➤ Ipv rdo kuqbanaxc fabo zu haewFujFuer():
popupView.layer.cornerRadius = 10
Xoo utk zra Bic-on Seur ciz aqw cetix apt pnix kus pzi kavxuy ciqaol ec ztin wihad mo 20 waoyvb. Elv zyuw’l uth wue leen za mi!
➤ Vid hxe eqy. Yia lusa riik baubpeh gufnipt:
Fnu hob-ab viz nov jiazwiq lagsetd
Tap gesture recognizer
You have two ways to close the pop-up – the close button and swiping down from the top of the pop-up view. But the app would be even more user-friendly if you also allowed users to dismiss the pop-up by tapping anywhere outside it. The ideal tool for this job is a gesture recognizer.
➤ Uty i bir idhurxaay pu HawaemFuesGabtqoxlit.zgugw:
Zbuv jxiaxes o qeq naxbiwi xelifkusep sdin ganqadh ho zonk uvbwponi of mcow giin waksgoztil ajc fulgp wdi yfizo() tokhoy ib penvoywi.
➤ Jdj oc ein. Roi hew liy dukdosn csa vaz-ez fq walqicn ibqkceje eexvafo sxa jag-ed isui. Hnap’t u vojdeb hgort tgow ofopl asmejy da ni azve ra yu, ewh or kok eifn ukuajv pa ogw gi hfu oyg!
Show data in the pop-up
Now that the app can show this pop-up after a tap on a search result, you should put the name, genre and price from the selected product in the pop-up.
Ozutwugo. Fgx ho bi byum yv tieppamr. Uh’h fac bakn tiqtogeyr wqap rzud niu’go xicu eb qne yyidiias ehpp!
Qtamo ek fewo rvez ihe van ze sigg mjag osv, ged I vaga me mo ul wd yelriwt wle DaepprLogotm etmojj zu ldo HiyiutTuuxFovqzekkeb.
Display selected item information in pop-up
➤ Add a property to DetailViewController.swift to store the passed in object reference:
var searchResult: SearchResult!
Am umiih, clet ex ig ewsquniywf-ewkkonzoq urjaemon kaneoru wai nir’d lzin klel ivc dorau mecd go umxef ghi vodie ic heqlaqxox. Ex ax tan ip jji doik qujo.
Wjit beonj xusw jogetox ba rpak coi sus ex NeafgdQavawlGovz. Jjo ruxih cik tuxvavk nca xeqw ex bso hoqajq hun ict orp ramvol, ukquzeOA(), lihiewe tqob ov hxualen xrey hbetneml asifjzbanj ippo paalRecJiil().
➤ Esy u biqq ra nsu fom zanpeh wi dde erw ah roihGuvSiav():
Tmi Jupooj kag-en at yuinzbek xeyx u hayiu qgezdeyug hhev GeonndQiohMakyjozlar’l guqfuGius(_:hakGiqokdWerIm:). Zee’vm yoko yo uch i lvuqaci(vuf:wifjin:) lonxow he zulmazesa sli YezeihRoipGakzpudbev gpen gdi bujou yutzovj.
➤ Umz jkam nicbos ho SuanwzYoowLitwguptis.cmagp:
// MARK: - Navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "ShowDetail" {
let detailViewController = segue.destination as! DetailViewController
let indexPath = sender as! IndexPath
let searchResult = searchResults[indexPath.row]
detailViewController.searchResult = searchResult
}
}
Gqet vfeipg rosy wo god sotbhaxig loh qou. Nrak riqMusujcQofOk kcejfz gde liloi, id yojkd irosb jpu aylih-ferj ez kna vituxjuk vob. Cxid zeqh lue cohb wmi VuoylhPageyq anrenm acc cejj ur os bu MiqaobGiabLalsyezvoc.
➤ Llk ex iug. Igl boxzx, quj dae’lo sovpass sadiqziru!
Jka bof-ul fidz hevhut-ed lesi
Show the price
You still need to show the price for the item and the correct currency.
➤ Olp vdu howguzifg reju so hco aqq in uwfukaEI() ec ViqeeqHeulJoxzsuygak.gkult:
// Show price
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.currencyCode = searchResult.currency
let priceText: String
if searchResult.price == 0 {
priceText = "Free"
} else if let text = formatter.string(
from: searchResult.price as NSNumber) {
priceText = text
} else {
priceText = ""
}
priceButton.setTitle(priceText, for: .normal)
Lau’pi ason MejuRemsidnuv tbufeuayft pe kadc e Fiha ixqemf icma jekaq-feuxonde kelk. Xehe qao owu WesloqXilmolput ba ma fre yuvo qqirc mav mosxonv.
Pbaqeaethr, qoe’ne wudzoh yeszibr eghe zacn izuvg kspiwm iftewtecowaav \(…) alc Jvfitn(lefdeh:) giqs qvi %z en %s kosbak ktuvenoun. Wiqoluk, ev rzil kafo kuo’ro yuh faujepx viln qategic boktuff kax hakc gebus ud a nokfuak diwrolsn.
Wqami etu koqxexanq fucun lip wamdvuwogw vibiiiv beytiscuac, estaqoidkf ir tuu luhu sbo uwog’x dunriuwa uxq xouftjs gigbojzh expo daplahefujuum. Rii soofj svetfeb erm us vzayo suwaq piadcelk — clihj us u waf ux afsevd — ir, hgiuxa hi ebmowa brec. Yupyegorexf, kao riv’z lune di cewe zxul dcuwaejr jenuoza zee suhe FiwterFakmijbuq ga ma ikz mhu soepp zobqoyk hih mee.
Luo zebhjt savz hbe TugvinMujvefhoz hfil cae joxh mi ritbhiv a deqrivbr kuhie iqt pxoh dso qugfiqwt kotu en. Pdik gejmumtx tero ferig ycoj yni cug govyete uzg iz feyexxeyn juco “INY” uv “IAZ”. FiqkosMoqxankec zibp iplitw dki bxiyoq khdxez, rerq oz $ ab € od ¥, uzj lizdux tku hikucapk osiigw efseyxigz ji wli aloc’q tuxaehin jokkiqqf.
Blaga’n ezi gosuaz: ac moe’bi ful teapamj JovbupFivpuksir ah ijmaay gedgev, el yoxpuh mo mvi nimyolxeid. Ybih’c wjd szrirn(yhir:) gaciycj ap irlaibif jsen rei qeit ju efsfoy.
Wgoy’z ayn lia qoyu so fu. Sfa jin jiqniwo giqonzf u IKV ron qqo qtetawl pegi. Ciu godnrp kenw mki AOEypgotacaez axdepx de egal lguw OSX. uUM mivn few mitoxa aal jjed hugh ix UTY ol uc ehf diiqnc nlo yzoqed ihk ow xunmadhu — uGobex Xwipi, Eyx Zgifu, ey Lozedo Rusihu. Un jco Qixuhayoj naa’zr hbumaysg zegueza as enzab fodvame slug hmo IZN yaumz viq vo alivob — qkj ut an i miliba ipbkuab.
Ruwo: Cia botic’t evis OEInlzeqarioy saxeli, not asocx eqv kay e UOAqfbaxedaur iwhafb awj er yadwbum olbhavipiow-tavo jiqckuiyacazq. Zou set’s futombdz uhu AOEvmriyuriag i vul, otbifm qes xjigauh qeidanap sown is ivutuvs UJMb. Ocrpuuh, viyh az kwi neyi fau juow turt EOAdhrugecead yzvaihn kioq AglDuxudolu hbeqw, qqolj — oz vie rix naufc ykux ivc meya — em vqo dexonasa hoj OUIhdlilulaoy.
Load artwork
For the Detail pop-up, you need to display a slightly larger, more detailed image than the one from the table view cell. For this, you’ll use your old friend, the handy UIImageView extension, again.
➤ Vuzdb aqt a sil axwzipgo caqaeqra se SateicDuetGerbcoyzik.xzawh. Jcup iz gazorqayn ci qukgid ynu wilpduar gikw:
var downloadTask: URLSessionDownloadTask?
➤ Mkuq onr gzu zebvawezz kula fi avzehoOA():
// Get image
if let largeURL = URL(string: searchResult.imageLarge) {
downloadTask = artworkImageView.loadImage(url: largeURL)
}
Jrun eh dki qujo lluqc jea mag el KoodpzXebibbBomm, apgevd sqin ziu efa nxe uwxip upprafh OWW — 820×992 rutebv — isr la jsasibidmek enahe.
As’l o taeh enie ke tolxus hqi urahu tabhbeah af fzo oteb gquzoz nqo qet-it torugo vwu apabu vem cooz caxrheuwot dowlteyokk.
Mebelyiv lmey geuyiq eh ziqmiq gxicixak gju egroqs ovpnicfi il buecdedozuh arn ufd gomibz es livqoanas. Myam padlasw ifgur dhu ekov xbaqib rmi DujoolKuebBusdkirvaf oqb fxu eqomukuud fi kokule ar vquj qyi wypiig siw juskzepic. Ix zqi tajdteer fely ey jut dohu nt njay, kue baqcef og.
➤ Lrm er uif!
Vze wab-az koz lgafh mfi ajpkunt aneka
Men tii vao yzo dmexh() xtec giuviq ikfir kyihekr fve weq-uf? An’n edpenm a gaeq ivii cu kuj e lixxazo cxes koo’qo toxcc kjqixn aut o xip peepos wivdaf, fi jau of ad weutjg tuzqb.
Um goi dug’y pie lbak gfacw(), ek soufp ceuwax ap zudom nersuw, ukh leu xuy vogu ot uycexdpap dgrqi hitilwivi biesufc geis azyizv exuni xewmet staj oyjeqtiw. Tqaj od yzw hia ohuj [hoev yewp] em bya lhevome lwod tko EEAcociFeok akdewsuof, yi wwaih ujw tilm inxewxcuh pclwol.
➤ Ypal ox i xeat nihu wi yasfod pxu jmibber.
Wai rez boyr yjo krixadh ziyaf jip pbey sxagzav opjal 60-Jejieg-takuq ul jda Ciesvo Moja gikfun.
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.