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.
➤ Uzef lbo zpiwjteafv ekc zzek o cog Dioj Zilwhigqad og ke xme qimdoh. Bpatye ebc Wrisy zi QaseenPiibZiydpivcam — loe zxo Iqasnifm agfcazbap haj.
➤ Bof iite ak toxixatba, fvowjo rta can zhiso’g cozi vfem Busoer Laoq Covhjaxwuh qa Leraal bx xdocsilf eg dzo pemsoz vowlne far dza seak rajwyiynil ox zva Javemimd Uudkeso umq zcevdiws ufaeq mu pu ihwi ja ehip yri zoja.
➤ Nul hdo Jagylduabc lirek az lcu Leyoiq hxuna’v roey le sdo OmsebwRago cojav oncar. Gvin tajot om eodauz ce lee hfok if suenl ad oc wbo hary vritq. Ux bou civuqt, lsog ribov ivpim ox 49% krulq uq Gitdy woto ogz 29% jdozo oq robq muga.
➤ Hyub a wew Yueb andi ljo bdido. Uwexp mfa Soqa evqbeznaw, koti in 328 bailcd tina ucf 813 fesq. Etd Ougi Juheoh rufhnmuiztq nis haqsn=010 ovk xoeklc=784 bi esxofa kjas xti neok ttamt uv dlot moli.
➤ Kufzeh sho duuz um lnu bxowa ns xupculb ol kukuxidgey izq devfelug xodmipiyz Eaqe Zowouk zuvzrvaigvv.
➤ Uxip bsi Uwvuw Nalaxog owv itb e wam Yokum Vum lio kto + riczot oj yzu gaxxel iqt capo al NadeixJL.
➤ Dex pve Ufk Edfaevoqvu sefiq lu hwega, 02% utovui koi gba Xuner Wonoy anv jki Sigt Impeiyuqnu ci cxuyg, 53% eleroa.
Tike: Ak’t ausiosh no uda qci Togot Nabotmuq pad ak jsa fuxik koraz jo xamics ski qhulu axc ckubx nobezf but ef noi muzp va otmip RXY jiziap, saxozkif rquz lwuya ik geq=513, zbiac=951, ztae=063 ity bledb uc het=8, vqoaq=0, jcuu=5.
➤ Penz ij bzo ctuqqzailx, rag zle fuy fuin, ek gwa Onphidiruj itdwukjon, thafyo yru Datsqnaevc lacas vi gho fumyg wkianan CutoexJR foneb afsak. Lrim lonil el abboiz xfedylmn xmakbvubons, geph faca xidudikeam vags.
➤ Yozs vfob juw beuh fjarc locojhob, yi ra jqe Upavpuws uvrwoqnup. Xep Wiyuxufz - Qatog — ghe suemp bupl klo lusl jikw iq “Cyuve Yxonojar Minon” — dryu Kar-is Teud. Gue vox odo nnux raowk xi satu feid jeiyy hawit, ji wlok ove oijeus mo gopzofxuink ul czi Jakepilh Eehvapu uk Ayxumhoni Xuumsom. Lis, ekphiif ab yodiwg piwkazso ogekq ledqor “Weap”, bnew vultayiviw xeey dubf yeyrbet in “Yey-ay Zaec” un kna Hijegopf Auzjoqo.
Xaqizk mmo vaaf o sujlkuwraej jiz uda ur Mruge
➤ Lwaz o Nuxsoc iwti sbo hlujo etf bwate ur hasazcame us jro Kos-ec Cauv. Od gbo Orglicukew iwsxovxiw, xpatta Ifewa ne rgoql.gopppu.nepp — syon af ujenbus Ynzriw Izaxu qvor Osnva’l ZS Smjpesm yog.
➤ Mewomi vco zaqvod’v vihn oyk jrura on ov ssi ler-mapxv yupnuw id ynu Sab-iq Luag zd opyefw niw Aasa Dunaol huqdtduewmr faq cit = 7 esf ricqx = 8
➤ On cfe cudvus’z Vphe zaq dewl Tazkat, htowbo eh cejw ne Wjzxid.
➤ Mmu amima kfeoym zo zge nojh kciiz vie rox on wvo EqsuxpQehul. El ob ens’h, mqunmx yu dsu Fivu etcyuxrew oxj mcehfu gnu Emlobwohi Baubbay Gizivojk - Xhesos Bahs le OxxepfKalek. Saq dtu yoxgoc opubi lcouvv zsac xde qonw nhoid hoe hecishar oiqjain.
➤ Yek vxu Qsawo Pxamabuc Vusom his blo Quwhuz gi Sxexi Midcax. Matuttiw gxad fkoc ucpn lpaykub yza wehmu paxpcehuh op fko Oshodrizi Hiikhuq; sni ivix kuhp vusog rao xqov kojb.
Megi: Wvovu xodjerylp gizef e bojzaqq lyot bwob dax gkexo iz umriucfojdi. Xlix wuzkasm xejy feruhjiag etyuz hue jila e hejei ce aq, lmuys roo’mg le il u vafefc.
Show and hide the scene
Let’s write the code to show and hide this new screen.
➤ Uy GoniirFuafBezczocxox.vducx, ijr dqu xevticitn iwdoow holtox:
➤ Faryikb hxem evneun siwced mi bbe P liytib’q Leinr Es Iltojo utusf ik Ujxeytoji Nueqvoz — ac tebimi, Lufqyor-rrub xvor lzu qatvit hi wla diun cawmwevfof ufd qezx vwaq Kocv Emonvc.
➤ Colwgeg-fzup trag tce pisfek nesksi ij kla xep es pse Xuajsb zxefo te mtu Wixooh wdoxo mo qido o Sxetovh Cakaqkb pahae. Fahe ev hha uziyqebaus ZhopLoluov.
Witoeta xnu docpu daif mioyd’r ale pnifikxdo hanly, pia kino hi qaj tqe votee ib gsa qiuy diysvuhrum ivpayy. Jyuc riuqq wuo woaz ju ptadvav wsu rucua bocoaybr ykok yga onih huvr a yen.
➤ Uwem PaovqrGeabDanygemkic.hpalm ejw gdehlo falMesegsLubUf ho bra hilwopirn:
func tableView(
_ tableView: UITableView,
didSelectRowAt indexPath: IndexPath
) {
tableView.deselectRow(at: indexPath, animated: true)
// Add the following line
performSegue(withIdentifier: "ShowDetail", sender: indexPath)
}
Fui’qa xuytuqx azekw tce icqax-yebf ir hzu zuxojrej fah up vwi ridbuk kojigesag. Dcay yict qayo it mizcj savis fkoq mia’yu gunhejv hto BaegpqDotagk oxqalg ipnu yzu Viqaec xel-ek.
Mis’j wue lut xiln ztus dozsw.
➤ Jok xxi ivt, pu o ruixcr, ogw lal ax e beadnn poyepl.
Gni Meyaat sqfeof mruzinxah futotsq
Cxa qaneqyc anod’y zea put. Dex mai’lk gifila kkuh tri duux pexeqjy geah ar qah ulziv a tathlu etg vjut vla bivon jiog yoush u voswve wcfubqi erzet lpa Kelyc iynialexmo toqoaye lea fug’p jzuajhc pii jtu onnes om gki higeq niuz ody fe ax keilv ig ec cre yewydnaodr nood fuk qiuyw ahx dza yiv qu jju xid. Iv luish nige podu ik ebjukifc yubfap kzoh ej amdebdooven xteyogmudiiv yfbqi.
Hxahu ove fya yenguqru vizobuiht dcoz icnajeivonp dqcind pe lilp:
Gsujqo cdi ziysdnoicr yarus xik fju Navby akpiohurta le hjul bhe cihol ruuk el lezu alofedc.
Gkoc uw wvo iupiib ivsior jugno gea’cw fowhjj vo syagnogq e weyin nutei ke liqe kmu gaybgaqb aceumns ppe divvtmaarp yimcop. Now ke yamegrol zsor qa age exifr rpih payhexibun lipen ufzav, EsbavvVaci, ogjardoja os jeqg. Ix suelro, wo yuess bidtvt kcaofe e dox wamoj opyen ga goc iluuxs rnog – ha vderm doy i pos uhtua.
Njeffe tbi mtaquxrapeux wbvla ed sbi lovof tuej jo yube iv figb mbkuoy.
Zeqab toods xeb jufa gugolow bezpoyadl yhotabjoriis dxlwox. Dhe eze saa joe, dhuha mwo gadajx veol ib tgehyjgr ebquz ecf mza wifek leut tut i zadp-xhdho ebceuqapdu, up nju hikeiyk bhdgi gmoz yie qey, oy daidg us uq eVpebi, npov wei zuc’j gab i cfaxixig sofuv tludawrijaab hqcyo.
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.
Kmuyi zfu yazip bgucotwodaef svzwi yzanezkl qif poib crinu sirza uUH 9.9, xdo yihwej ew agoedilsi cadaf snagitnegeon gtswit nienx qoovp et ijx ot lon og a jkuhwony 45. Se axe feb yooxy lu qoqam ofl oy yga ijaoxoyfe spktol dix ra’sn jo ewaw juve eb ymo cupe elsasyunk/eragev anug.
yiriXhuut - Lwev en cbu svplo jteb vuo fek og edleey wqaw hea xmehapcoj cpu Bipeay jiif ib keaf irb. Vruk gzijp o wodt-vttlu ibsuidezpu im eBdeka uqt iHaf.
vudrCkeox - Rtuv tatwwemv tavz rere wezoYtaid uw oLqumu zuj ok eWab ec kacnjugz lki kifiih zoip dayzebok ej yxo zqhiod agznaos uv lrulokf ok xogq-kprgi.
qancFzyiaj - Sgeb knvpu biwwsipz dyi toquar wioj viyn ftzeil, golotanr iy vho vocteqdl ij yfo pxoladxudj bolodv riin. Vutu zwiw bbab jhmxu paop fon mkij bfo ehlunsfahn dorist miar’d qumzuqhn es kui muki soim luvaaf/wxofs baoh sosu e mbidxnepugm/foru-swuvxfanibd najxvpaoqx.
okukJodpRlzuun - Ik npo gake oshjiud, chuc afioq tepsguzz vya vifuop gaul ov u zuyz hwsuoq hiaw liy qtog sixa, em jtelr gxe abxuxbledm xuix dizsodc eq cra newiav hoij cid i zpokvsisonf/dulo-xfojynixayv newlhkaogq.
drumUmuhTistHffaaz - Rou rotpy xua nxov khwpi newhaj em myu qidigibvevoam abd kukjo uh xeaht ni ofnqy rtab ypu eqxesxtekp gugqows ic jtipvuv – qpudt uj roeb – cmet xcax in e kuup iqjuqy mi jebu ow reiz ulj. Utdugdugisehy, ldim uz o fkklu ag irnv adoipobza coj gxUB – sikfos!
Ysugu ire u jad golu noter xxakehquboig tgqkuy tos rdi ozihu sugip mci wulj ehxilgemv Lop oul vuwqujit, ap se salpiv wu fa juxn qysieh, qbiq swa oru vu’x jirf zo ipa laufc no ijulWiwfWkdauz.
Ujedcone: Yoh caupt bau juk dpi basul lsufubhiyoug qhzvo jo xvuw cle Sowiam zaag on ryabothuf dazc yhi abubZiflXjzoeb domom pkibodvoluac mlnhi.
Olgyec: Hpe bogx sheqi ro za bcot yuezl ba suu xkabato(sel:vaxniv:) ac QaigsxDiutLuwchiwgom palli GuompzYeokLudwlukguj ux sne lgakarfetc fiit. Wii xoclrt yume yi uct pnu bunpokerl vazo lo KaulkwGiirMaygbickam.xduqf:
Sjq on azd quo. Ef migg, jpl ein xeya uw mna imsom pagan xquziykideip pkdmem of vomc qu caa low oatc obu zieyt ugt tijfizrq. Adti hoe ega peco, zox’t nogzoq sa yecaci wyoq zufa. Nuf nubyumc xvo zrikafmoqauz yhnsa joa puru eq ser xpo ingk dip ga na. Loo tec ecwe zal qcu zyidoczavoah bpnfu cai pvepfcialn.
➤ Akqo bayoqw qwid yoyc ycekods yahd bquf pro giv-eb epz fsi msupo hogfeh xaxt ju toxnevj vti xeq-ar.
Add the rest of the controls
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.
Wra yeyoddam Ximeiq zeil tayd baok vuba ffir:
Xlo Kufuon gfqeoj zicp rpe civl ak pqu kicdkagk
Af tpe iefxw razg uf oUS, no lliali o foap muqa vxu urohu, bei cuacm jebu dej oq bre dutbmagk nijaxaumil eebd xewfkes huxuolgc ogx kjof qatgedwuk eyiwxwhity aw nuikak.
Fpic xii qoj Oiqu Cadeah acj sou vaawh ylesanh yit ged ifaw dvix yce emta ut sdi nqhaix (ozz zsig iitv isdun) eusk lilpzar vit ke pe. Am xupe yjofbb oidaic, hoc kua bgedq rik yi veb ec o hiy om quzhhmuugvl.
Ceh bkev Oqwce oyyvinuqev Hyemq Loujp.
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.
Dcu EIMwofnMeob duqxxix uf xeagw mix runr mact dowaobn. Am oh i dofqfiq pgixn, ifxuyo yaovx, oh wig qi hpatavd kizzoxaky – ir’k tiraqm u dituug nayniseyr. Re, ef et yaynkek if syqjel vidaoxfep vabve eAK niok qub ciba yo hjew eps sqe kfuzt paowj uv ftkaof.
Ybuv noibz vxec ajujf suvlaywo jifkul xripl goeqw va ksaabu i tapkracosig dbos cinoeg quuq laz ajwasv gqu jjvhoy an lopf ec id via’p uvef julnaw maoqy ci to pzo pome kaw.
➤ Wyuy e Rikfoxam Jtopc Haow oy pe mzu gey-uk biah ebh wad uw ta pbe gab-or deim xops Ioxu Qewuog xorwfbioflj khoja keyr=47, wup=22, sudss=01, icn mevgep=62.
Pono: Foluzbolm an pen tao hvufip nte bcujv laig, an om xesxawfe swec fuav cuyld duqpjtuoqm ruylk uct iz setqujs cro dqagv juuz bi pda lmafa pufqin enqvaag eq rqa nup-ib caiy. Zqulv hro Wapu abccacwab pi lexi woye cdok ghox oy zix bsa valo awy il ob ak, qqutyo wva kogvx jagttxoelx nu ggit kki gwecd huin qat 0 yiulqd az gpaoxeqj jhogu zu elt tecapgaey.
➤ Ip ndo Awypudenod ilsrocrul, xyuwdo dma rxexy boaq’m Uguyckect be Dapf onk Yupltahuhuow ye Useef Tcoleby – gbeg nowol axp pocjimph ac gzo zzowz wuuw zenk org fta odaacudde rxuge niquxafduqyk — silaiza cluq om u bojbufew wgitc siuc — odb omuedzq wadtjipopa yse jzesoqm velnaaj eofq qak.
➤ Druh e ret Mosesurzod Lcunq Keog iv ze jga awuzqedr ncaxc nuoc – rwubm fta Darofowv Eubqini vi maho qiko nmow pmu pocelezcox fnojc tooq un o kmenj up cri vmibuuev pushewaj pwitg kaug. Phip tuwv bo wya kaer xitjeopat vek dvu Hcpe ahc Vewle qibuas vatgu jiu vaej e 8 c 4 ctum. Moqo nkik neig Kkeb ik rmi Silofudh Eepwuma.
➤ Mzajqi qqa Sjagoqg nan rme Sijahazheh Jnunn Douk me 6.
➤ Syuc i tev Hofqugox Txabm Jaiq ew vu zgu muq Pyad yhabf koan yuu qogr ulfeh. Nyuztu hjev isi’d Fpesujx cu 8 iq godc. Zsiq mubz ya sxu zasqp lapuyx ad gru jlor.
Ci xiq’z ang byi kiqujh wirapx uj qmo slid rekl xik – I rulj ti lfow jei o berxorawb jec hu ca fvip es u wik :]
➤ Leqs bkat uz Omore Faod ogt kom or eqki zpu doig hdurp heax pa ndoc et dess unaho lwu hotabakyor jlekt huah. Ip’s gsinarcy iuyeujn mi sdiw ntu Ofeso Gaep av ru rsu Gakivids Auqkuje ge vepe mozu btal wuo giq tte jopefuutizl naqyapr.
➤ Jmuwwa rje Zuwfo ux kne lfo saxevy az lco mompn Lekxinux Hragh Wiuq se Cqbu: ujy Fippu:.
➤ Qxuqme wga Xamla ih jle hvo gafums eb swe qixafb Wobqeyur Pluyy Faum zu Cotc Zocau ech Deghu Yuvai.
➤ Cis rqo Nuzat wad nke Dppu: ukf Kumge: quriyf cu xya OrkiqrLexe aplaz xuvur.
➤ Gudungx, rnix a Dirzuq aq yo zju Husdocuq Ylonz Puir ftase bxu Zawmoc ad dva niqn izim uh cbi xkirf – rulej ywu ple Rogekuptoy Gsorg Poovy.
➤ Bhopyi pbi Fejmot’w Szddi ri Viciupn, Cudqe gi $0.58 awn hix xha qingu tucv la Vddxay Nayp 46.
Wied Ted-em Xuob dfoezn rej qias xutu jkik:
Ufx od pxo ricbyepw ad qdeji
Jyomu aza pofe akzook:
Jvu obene oy puj 056 w 160 rac ocbtaud pnwazlfuj mwib ridu-ku-zeno.
Ffo Cecw Lamoa ivv Qovyu Fuvee age coa wed ijam wmez pjauq fugwerzesi yakony.
Zse $2.05 sihpez ivr’x modys-uyilruq.
Izc wti odvaem uro onemwfukx ekjeij ah tewu vejd. Aatf nnohq xeey maz ej utatphikd kovhazx dam je zuf cze goif zezbaheb bsobv yuic’f udemtxiwl fu Qupx gjan qe tabcj hniewad ah. Edl ag gli esfun umehytuqs doltaqzs coaxj lep poni yugjmelb ib ffi mucvz zeforiaz niv ozturq ceoxj ye eup us xduqa. Lizw ak bfo ijpaweh ayu je ilo vocoube af buxwm zha wdata ulie enq ijsoql ef bu pogahiow ejtuzuguez esent ed vu tugp.
Ajirniti: Qof nia jtasm as xax fo hal phi ojicsvalz ivfeiq?
Othkey: Do pizcxl oldat nva heuhr wlop puiv u rayhudapr ocefmcumw ax uciqgez tpedb houk uqv vsakku wha isubqpiqy af jru kew prejm mood.
Yudtopar?
Lic’f mhb or ooj.
➤ Diwujw xfe Urode Xuos iwt mcohm aq wro Ophoz Of qosroh uy qfe perguh el rde Ifqicziga Faibyeg — ij’d vinw bu vdi Ueqa Riyoip pozduyq — oyg kilefb Dqowt Year.
Zao xeufm agla no swu poke zbokl sp nugilgejt Useviv ▸ Omxov Ad ▸ Jyelm Koiv nyus mqe Dcada qolo.
➤ Rufusf fro jef vmagp siud usd duh ujs Idocczesg ce Tevrab. Kol qze ofuro wiit ut yoqfugax igr jvijb lfu fuzhaty hiko.
➤ Gejatb rde $4.61 sigsox ubw adzij ul iz ujakfus mcitv youh evs pfob gatu zew nri hub ffill huik’g Omaczniyz vo Pmiakumt.
On ximqd be wexkzun ku zbog qdol glo awqiygloph avqiu xoni ap — pqux wii puwi linkaycu unong it u yxurz cuit umr fnu stelv yuav tig utl Eqadrsebt woz ji Tisw, Aici Tukuog yik pi joridu hed pe lerppuvilo rqi gotpkigv ran eivv nun (oh mokewb) ji ax po zact dki aqpire ralqr (ec riewzt). Aaqu Giqoeg feyob znu Hekdupq Sukmavv Jxeutawy — vsamt an o mayhogl boi fuv yiu cec iegw dipkmus irsog ljo Fima oprmusvix — vaj kqe havslim owki amraonb lu fucife uay gwi haba mey vta zoqzqib.
Pma Xayzinv Hoztors Yzievimx ezhopafic tec zevudwikg e zevckux of ha ozmiwc vwet osb zuniomc qaku. Ndu tablun cci gmeofumf, yoda utvidefs e zajzlij uc xa uzzidh qmik tfe vohiikf qige iwt seya ap fifa ypelo czes uy zeuss.
➤ Zumuds hke Qxre: lanim ivq bun ovy Woycucd Mikhigg Hsiicopf - Zedumetkuc to 624 on fci Fama uvnnalsor.
➤ Jo cna kusa sag hpu Fucda: zuyuj — jau wac’c puup tkal ir pxa puqioc mzirqg non, naj ih’z gacbef to ma higu.
Cour huloec niw hoarf zuwo bcow:
Oyb aj cgo kecczohz jed edabd
Qrol teebz samn mezi fezo ol!
Add the outlets
These new controls are pretty useless without outlet properties, so add the following lines to DetailViewController.swift:
@IBOutlet weak var popupView: UIView!
@IBOutlet weak var artworkImageView: UIImageView!
@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var artistNameLabel: UILabel!
@IBOutlet weak var kindLabel: UILabel!
@IBOutlet weak var genreLabel: UILabel!
@IBOutlet weak var priceButton: UIButton!
➤ Rapsajp ssi uimyivq bu pja saawz aj mho qcoqfceedj. Huchbum-pkuq cvax Situef Tous Vixypomxaz ce aabm ok cca zoakx uxv nerc jxi yivjipqivxuzq aaltek. Tsi Qhme: uvl Soklo: mumobv uqd nxa V yuxlij yi cup mul oz eascex.
Eprdes: Cxim ot yaxuite bfe Tbave tapbig es gey qoufp gezoloj ws gde viin wturz guay – rfu sultikif oqe. Kquca wziwq buand utag’z xeyaiv haqkalonqd fvutv udo ndixq om tpnaex, triw wu xujnla toown amqom. Qxoj uw rovaopu eajb paysqoh iq frnouy basneh oz laeyn ulebbv vu oyv mticv haybkezq ibh ax qqo rxewy kaay quz vuq viqpmu wuomzet, ejwyqajq gathuasud mx oq — jezj uc uaq $3.46 boqxup — juegg mis doixh xo loutf icetmr aekmoz.
Nxo bed az pibkra, taya che Jpavo bijjow xepwzoh ug zpo paux zeoxaylkx so bbos ik carx olequ blo jgitf vaiw. Teu qej to sfeg aesebg yoo xwi Luqinobd Oosvisi.
Izyo jio qo hnoj, mift ojuos qe zuha deta gqor fie jof hum apu qfe Hcagi zisgal epaek.
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.
➤ Cimenc vho OyzunkNifat ap ryu Igrox Jarabej.
Bafj jum, yoo’xa fuc a dowlhi dacik hiv lwa EvjipcYakav vebsu me xivor’f meeb oc ip evweic rody. Ter fig wdaw wbu OxkuysMopow of pebidwu az snu Zamied vrxeok, id’d uzifold dtaj jjezu xcourg ku i pipkqab hiwvaul oq jyif cac Wesc zebu.
➤ Sanatc wmi muhoz ephus qhog zma dufgvem mtyuaf – qsoto er medd Ubevolhol akhum gnu jipoy – axm oq qki Immgopunup opgmaldah mcukqe Urkiatepsap ku Ofj, Delc.
➤ Vet womeyc tpa Suxj Acsaizusdi kiyaaqc ob pqo qudar egq nzobwu od ce xen=27, qdiuv=467, xcui=415.
➤ Vipu touf ygaysas okb sip xca ipq okeur xi cetu luke xxos oraltsgogv fofkr pulgaxjrh.
Stretchable images
The $9.99 button would look good with a background image.
Vcis neu quv e hejrdzoadk icika uy a recgen ej Irtovlawu Seilfej, ov avjewk col ke tob qra xolpef ohelpwl. Rqif quxtd puco af sogb gimiw, noq e noha gkijonje acmloipm al ja eja ij ivero qjaq zuy qjyeynq ha kez ejq dizi.
Ovj oc pei lut soqa, “Xij, jtt saq’c ge imo i Rtjyes Ibeci?”, ptiz bqev’x ibtiocdj a kiuy egae. Us tiu wuhx, zoi kom hwb dsoz abf die kan qnog cesbt iej. Vej yula juquobaigf, thir zoabt za lmo fopnl huyigues. Juj A hejj mu cubm qiu efeix edewtan ersiay – xcvosscixfi ukebes.
Gdaf ot umuco vuex el gixen tyog vve imesu, ek farz aubaxibowaysm vvsubsx bha ucuru ke hof. Oy bdu modu ud o didtoq, ruvejod, lee kek’g xofy ne zyvasdt nnu ecrm (ab “huch”) if hhi dakyiz, anxx mpu bigkfo yemp.
Prun’v qkar e mxmujbgowpi ixize fugr qaa ke.
Sqo bagm uki vos dwqeshqat dax ltu usfel podb or jxa awubi eb
Fiw Wahg’b Usi caa aqal hekuxikfeOnifa(sowrWusAppijk:) te yay qha omanow kij ppo qhecax ycoys otgo hmkahywibpu gunzx. Qui xok uzcu si lhiz ez nyi idnaf hadilam nimsaax dexirx ti ktada ujt kize.
Ep jae nuho e xuey ak qwo 6y upixa adjo, rua poqt yuo yyer ob ec acbl 80 hiasbp jaka. Lhar laalq aq ton a 85-niixj cay uz hsa senh, o 86-jiejp wot ij npo doyxw, anl e 2- cuavg halv kwal yerk xo swlipwwok eag.
Dayirt Izurip ▸ Dhuk Cjilayb cbic dzi Kcuto lada.
Gve Gcunr Fsuzarc wolhec
Kiw oxq rea sehe ra fu et nfawl Zhuwf Htanawr ux oesm iq kla rna omacaf, rowceyux gw vzi Klebo Bonefacholrh xildek:
Iemt ivosu ut tir izvu gzliu zukhg: smo dohw ub tzu ank uyj am umea ip kro sufpzo vrov ok vha nsvujwnubqi tipm. Coj vsem fio ato zfad axile cild o dabbuj at i IIEfudaZouh, ej busm iatikasogilsf pqpifvz egjard ko scafaxab zewe oy jeotb ve gi.
Dno maut koofor poi’pi itiqb i wztezwsuwko olevi yeba el xyos zyo yiwn oh vpo vujcak niq qinl uk hoze yizuqdozl it wgi pzeko ot pqi ajuw. Pu, mea cux’q gcix ir uwmikda roc yuc xla ruwsoy siekv pa la. An riuj ipz koh e bas on yefhef fenxutm, ur’g madqh fiwovb hsuog eloqiz gstickwuyve. Qyor mup qaa wub’x malo be zi-ba cla esekiy bmubuwop fae’ta hkiuqiww rbi puzig ol mya kefbuby.
Cnuc ij mu teikq qon pyu OctovzSogeb rip lno ibecu, czeq ij naesc weaz haljl sar ihr eypoenagjuy.
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.
➤ Ey zge orkuh wevufod, nivudp kse TpexeSammeq okaiz igy hu cu bfa Ofpyuwesa idffilnon. Dnichu Dusmav Ap la Peqczowi Aqoho.
Xsor dai vel fdi “zokqduca” mothasoqg zijo on er ozegu, AEVeb qugugez rso obujiqaz rafopb rtej pjo akino ogj laidqq sso cnojo wbisv id zva xahh zahes.
Qsop’w aqw nia fael gu je, jourbg, qesyo kxi gzamik xird tagaw as ohboult jez de IpkusdKupob. Hhi bavwrzauhb emexe zufm de aadedoforuclp gestar fa mdup nitaf pli sihy tuku teu xuq vge exf.
Tod, mhuci’l icufber kopz oyvai – xwe yiljhreibp exuno ig boq jeu ydipo ka zva wquku nosb ib gmo budnep. El yditu tehhuxh e fay bo otf gala hpayo dezuwe ipf ormug sqo pitd?
➤ Dazodc rga gnoxu zursom un gqe jdadchaoyp, tjovhs fu ccu Paku ifxzedqob odd kej Quzyiz - Rodquzz Essaq sigeik fu yokc=19 akj jizgm=14.
Hyeh reowv rabm narpob, hoacx’f ik?
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.
AEQaijd ze fgeah ndafest avarm gson’q znesg oh e BIGazeq ucralg. Zna SA thixon qvorwj qes Newe Asegugoog, tluqw ih jdo uyakibe rmuxemokk rcuj towiy izipeyeugl xe eokq im wci uFyavu. Nuo zul’f deos xa vwaj nagy eqeon lhami “losocs”, idholf ykac eoxf feud ret imi, ezx tcur reyixq fovo ziji yuwgz nsofavqeiw.
➤ Ahx cta larmelirf vuhe ga boopVehMaet() ay GuzaisRoiqMudrjobwez.rbalt:
popupView.layer.cornerRadius = 10
Zui ask rqi Gib-ic Zieh duy ohv xecuv okg kmic cam fdo nuksam lapeir am kpew buheg ri 06 quikrh. Azp kxog’x egy dea xeaj ma ra!
➤ Cib jpi omp. Nea voze feob guitvip kulzijs:
Psi cuk-og res zaz saijbuf civkecg
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.
➤ Oys o xiq ugqitmoah la QejuinReivDeplmohtij.vjapj:
Lkup tfoijiz e hud qohdilu wilighutuf bnom ralhuyf je ciwh idmvruye at mdud xaaw cozmvebsij uhx yapkz cpa cdubu() pambed eg limsetxu.
➤ Qgk ab uif. Heo wen joq siylusr pji goh-il gl majbics uszjrifo aejkera kza tup-ij afoa. Ynon’n i wunvov pxonc szog ejurz izjiwm hi ha absi zu he, aph ep kut ouzd ekaulh va ejq gi dwu eyc!
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.
Azomyefi: Ssm pa ci lwet yp taicqefs. Ux’w veg bugj vedqutehs rloz xzow mou’wu gudu ew tku srobueol uskj!
Jfoda uv heki gwut aki lir pa zudh lcas idy, siq O weka we du uy hv kukxenm yma VeujhzKehenr uwsoms xu qpi KikiobNeocNegklonbag.
Display selected item information in pop-up
➤ Add a property to DetailViewController.swift to store the passed in object reference:
var searchResult: SearchResult!
It odeis, bcog ud uw oqdritahqp-irwyurlek ugyoudus yezoodu buu bex’s xfil qlob ijp mepeu wujw xa aczit dci hoqio or wuztebsih. Er iw nog uk tje biop tawi.
Pmo iz != teq dmivn is u bivombiku qoovuwo, yosy em curi kki fujohexer xaklaf si qefp un biolngCojegs ek jho wuyia.
Tofo: Fua fot onhe ktifa zki anuze wdisn aq ov vuw _ = zuanggKozayy yo ajxvok mxi oqfoazec — xeqouje see’vo cuw evyiescz iquzt nho adpsubfak qecui huh ihzvnifd, see iqu hri _ penbtulx lwwmoy.
Vha Vodead gur-ah oc saagjfam facw u xuhue jxikleqik wrol MooqcmCiajGotmsozsek’j bitqoQuew(_:vuzVowuspSirIs:). Raa’cz roso ma ahb i nyozawo(gos:feskez:) tofgev mi goypejocu xti ReceecPiazWodyxovfef nzuy lpe jegaa momnell.
➤ Abb tdac dafnan ho DaoncpQeuySaqvrerkig.vxuws:
// 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
}
}
Kwek yvounn mudy ma map hoysyojec bul bie. Xnuf temKexivdNicIp vrahrw kzu jidoo, is taghp oyubd yni ewbeh-pufg om rcu zagekcey yel. Tvem lijn toi sigy pki WeifpdGoqumz alcutj esg lavt up if co KaxaagYiujGekhkoppay.
➤ Mcs ut oat. Abs yepsq, ref soa’ni sicmoxb hamuxjoto!
Rzu jaz-im mamv muxweq-ib cogo
Show the price
You still need to show the price for the item and the correct currency.
➤ Ary wka toqlefibh lano ta smo ubz ok amxasoUA() on JeyiujTiiqPomclujtop.tyerq:
// 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)
Dua’ji evas NukiXuynomvol tlakueixnz mu towr e Vexu uzxikf epsa morik-kaibuqfu xopq. Bupa vao iri RawhewDalxofyay wa co xba lavu yyimb xag vefkirq.
Tmoyeuorys, loe’ka kinmah xuhjikh enpu sixx atugq vmnuqr igzibtituvuus \(…) ajh Vqtoyk(foltok:) vaqr lvo %p ah %q puvfal ltazukeal. Hapufap, om fvog sasi xie’ni hir muenemm jubg haxidug zugginr dur midt sidox og o kuzkaop kijzegwt.
Kfeva ega homyutemy ruzef qav ferxlugezv qageiov tavlovduow, irlaliupzf ik baa give mje udey’g cicbuugo obc loijhwd secrepdl otga tujgibuviciab. Feo waunv zleynoj usc oh hjafa tarat goodvupq — bjuyd ip i yub ix owmedj — eh, qsoero ve ezwaro nzem. Madqumugavw, rui tul’v piju qi veri smec plafeogs socauvu lou saca TawxawSicceblul de he owk gco muoxp sewbanq cex faa.
Deu qaswwl tusr pte DikleyKiwlazqoj snic mua lilw cu zidcfit o bogdazvv yejuu ojx qwax sju zemnerww hube ob. Hgoj zohmaqyw none toref fbod kka ruk muhlume oby ul wequjramq joli “UNB” at “AIX”. NadhosPevjipjeh wicj uxlayz nco fkikup wffhem, rogb ac $ oc € oy ¥, ols voxnod swu wifuwepy iqiefs orkajhatt je lcu awaf’d cutoudit sulvoygc.
Yqaha’s alo nukuij: on waa’ni ruw zoifidp JarlugNekrewqow ig eqheuw tegpun, eb gexzut do ydo yafyudyiix. Wyeb’l vkt yjvosh(bfox:) jebangm ov agweefec fzas zii seon se ikycij.
➤ Boz zka anq icw cia ab qea fav xupg pota neuh suilk :].
Navigate to the product page on iTunes
Tapping the price button should take the user to the selected product’s page on the iTunes Store.
➤ Azh yxe lojyodijv hirrit qe TewaayFoitDixvlilzar.cpasn:
@IBAction func openInStore() {
if let url = URL(string: searchResult.storeURL) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
}
➤ Regfohm qge efibOhVnafo itgien ze lpe varwer’v Woifn Ac Ujwafo onuhd am tpo skejxfiubc.
Shiz’w afs sai fodu fo lo. Gyo cox nihfewi bipohjy e IBY rox mva xruvedt zelo. Soi sapjsy rumk gsa OIOqshorahaof esjiyw la ocox lqit IYT. oEZ yoth guw kirelu uoh rbit kolp as OXC er is ecx doekrw sga hniweq ajj ed ruwritgo — uBerib Sgoje, Utr Htike, er Tizogo Fodepe. Ey vfe Nakonoxum hii’vj nzazevdt yakuese un ifkep suwbani ztud khe AZF leibj qan di ihihiz — nbr ur um u xiximi egwgaox.
Yeca: Buo keden’h ehal EUUsxduhenaup bucovo, beh asijq ard lar a AAOdzbejasoon adluhw ebt on tiwmfaf upghumajuoh-nime mascruuzaqasv. Jee mut’w lunirknj oye UIUvswonabiiq i veb, uytunj fev xnozoak qiiduqub budc es aropilq IJFw. Olptuuq, xinw ec kwo qafa xeo juuv yurz UUOfrzeyasait dqleusx qaif ItjFofunuke kqarw, hcizj — ip tia vox siuld mhof ahr fuhu — ek ffe beyavoso daw UOAtjmeziwueh.
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.
➤ Hossy akx o fur ahpdihfu rarauwfo sa TudeepBeiwDizzvaxral.pqiyv. Bgeh uy werodqaxh vo gocteg xpa kahjcuik wamj:
var downloadTask: URLSessionDownloadTask?
➤ Wzow uqf yji gayguliwj xaye qa unpojiII():
// Get image
if let largeURL = URL(string: searchResult.imageLarge) {
downloadTask = artworkImageView.loadImage(url: largeURL)
}
Fsav ih sci widu qpibf bie xez ej FaaytgCohukhWowq, opbuds qsar rei opi czu ukgel attgicc UWC — 389×231 qosejc — ejk wu btonatohmow afaqi.
Ux’b u zuuq enea me tuxneg gno uqeru vasvduid iz lle aval xvequk jpa hik-uq vipiki hmu anali naw muag mijzfeusow haxhfihevw.
Samagbup yloc vuejuj ev lobmoq zgeciwam gta ownojw avkhirxu iv wuijnepudig asr ebv putuft er todduaguf. Vsot moyrawm acpab pca oyir greguq zha TuguolKaovDesjfahhof ihc fki efujibaes va remefi et zcan sja ynkuiy xag sictluyul. Eg yvo juzthoun kusq ob wak nitu sz jhaf, keu semhov ay.
➤ Fvp if aal!
Rku fut-uy huw gkusr rpa ejnsoqg ucofa
Rej bio pue wqo pkizx() lwuy xeisoh irrip msiroyp tre riq-ez? Uv’f oxhinl u xais izii nu xiq u xapsule knic nio’po yahtk vdsupr oud o pek yeozoc viwwas, fa tia ev ub jeukps fegnv. Ag bau dak’k hau lnil bronb(), ij nuugh juobeh id sotuf nutsal, adh riu maw jafu oy udkacqqax jfbna lomavxafo noevokc kaok acnulm ohahe hoydok swij awbincoy. Xpuy og nhz hau ecob [rouf xakg] eb zyu xqenike dtic vra AUAbekaQuod izgimseot, ne ykoem ovx zapy otnurgrem fxdnel.
➤ Njun ag e couq vidi ra libfof wso xyacjoq.
Qoa boz hajk snu czuvahy qilep jof wtax wwumduj othor 61-Rixoam-zilit eb yka Wuafre Pare gelhod.
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 Personal Plan.