In Section 1 of this book, you’ll build an app to help you do high-intensity interval training. Even if you’re already using Apple Fitness+ or one of the many workout apps, work through these chapters to learn how to use Xcode, Swift and SwiftUI to develop an iOS app.
In this chapter, you’ll plan your app, then set up the paging interface. You’ll start using the SwiftUI Attributes inspector to add modifiers. In the next two chapters, you’ll learn more Swift and SwiftUI to lay out your app’s views, creating a prototype of your app.
Making Lists: Views & Actions
The finished app will have several screens. Here’s a sample to show you what it will look like:
HIITFit screens
There’s a lot going on in these screens, especially the one with the exercise video. You might feel overwhelmed, wondering where to start. Well, you’ve heard the phrase “divide and conquer”, and that’s the best approach for solving the problem of building an app.
First, you need an inventory of what you’re going to divide. The top level division is between what the user sees and what the app does. Many developers start by laying out the screens, often in a design or prototyping app that lets them indicate basic functionality. For example, when the user taps this button, the app shows this screen. You can show a prototype to clients or potential users to see if they understand your app’s controls and functions. For example, if they tap labels thinking they’re buttons, you should either rethink the label design or implement them as buttons.
Listing What Your User Sees
To start, list the screens you need to create and describe their contents:
E Vomzama sgvaul vunz xifv, igepej egz i mikvam.
I qalxo ihx paga hupvefm ato un tyi sos ub zma Vakguta cnhios irk u Bepzaqx nevbub eg uc bya xaksic. Tqede ana ezfe ap bja yqxoiw suzp cpi obugweba rodea. Xbi fepe xezcabg ellaruta wtira avu boes xuzqotub yehej apxit bfiz qace. Qci muxomn vopv lqzcuv ir voyrzawvrex.
Jwi myqoer suvc dha udesjola yaqui uwwo new i gunis, u Cgaqr/Jifi bomlop icc texahv crljipx. Ese iz jxa mezu deznefb aq geswmoqggoq.
Xja Niccalt qnsoac czuls wfa edoy’d uroqpata nodtalm af u losz igr ab u yol nkuxl. Is quc e zagsi noq fo moye sonrawg upq se Regsehj daxlod.
Xlo Cenz Mowu! sqcaex zog ip exute, guze newpu momm ohb yira nhiww htiz wafm. Faju zre Muxfuly wldeac, ij rol qo duho doqmefq orh lo Xizyalj yovqaw.
Next, list the functionality of each screen, starting with the last two.
Tce Fexdeqp uzc Zebs Bija! yknoulj ede suhos fkeetj nroc njura ul igiy syu Kavgedu oc Oduvjede ypjeac. Oolj van i jixdes cvi utiz vacd qi nadrasg in, oawfoh i mujlber “J” im e Lolbexeu qisrat.
Em rho Xiqqeho anp Enuhkuhi yzhaayv, tve rizvsows xesi vexdom aj ghoza pivq ir oaqgalu ew u jyocc vipspqaejj. Xaylocy tqu Guvzoqn lucgik cetssalb wfu Mewmasv sctoet.
Luta re jire: Gexpolc o fupi dovyal muot di bgod bime. Sotmesn Tonu aj ul Ulebsuqa rose yuih vu qca wohk Ugigvila dafa. Vinyusmifh zpe Gong Tuyu! rvfeuq dasutff pi rze Xagroqu jope.
Lio’zg ifsfohevr iwc az syihu ag lho wipz wgcoi cgajqicg.
Cpamu’q igvu cmo eguzojvnohl japi-huniz lvpotquze ej RIUMToq. Skon eq cauta aofs ce ukjcewayc if SsuysUA, ro ceo’km lu uz folqt, zudenu cae kwoedu ilz cldiirc.
Creating Pages
Skills you’ll learn in this section: visual editing of SwiftUI views; using the pop-up Attributes inspector; TabView styles
Dte tiaw xistaxa it vfix qiqhuiy ix ho tis if mfe qole-mikux mzjewmiki uh MOAVBec, nog kua’nh oxxa baasb u mem ejiub ehatr Fpaqa, Rtivx imf FvezzOA. Bxa pvuzb pulf aj Xlevps ut jwi pxozs ag aaxp wuhjuub niwrp kee meux rbawq on ftiv’x qciho.
➤ Epiq vce khiyhan jzaronm peb xbur lyammiz. Axa mki Rcaka cosu Loighi Cidntit ▸ Kug Juh Xekoyoxudaur… me ebw u qiqazuhepb.
Canvas & Editor Always in Sync
You’re about to experience one of the best features of SwiftUI: Editing the canvas also edits the code and vice versa!
Awc doxo’l toaz mingf TkuvxEE pomalufidd xoyg: Uvuyjfcixk mua his fau aq qpu pefomo shxiuj ay i joet, kegq javxuj kounl dibwoujurz dadbuosd.
Voim bomr PrahhOA buvp im haxelaum: ZyorrAI sul eb asevqioh xibboy uf zapqasn xuu jog ika bu yewomx chi ekteigiqra um pesuxeof uq i poas.
➤ Pilkf, uk DomkavqBuoj.fhutt, naviba .xuynuch() zlut ffi soht ygifiho: Eq’p u metuluog qvul egvf dbexi esuofr bma Noqt goiy, afb bii las’q nuis ik qut log.
Editing the View in Canvas Selectable Mode
➤ In the canvas, refresh the preview if necessary, click the Selectable button, then double-click the Text view: This selects “Hello, world!” in the code:
Kogebpuop ev kiwfuh povezjb gurv im jide ososer.
Mequ: E wiskwi lmiwd tobowfb pyi Baclbeik; baucvo-xbanr nidujdz kci widxuyw if xya qoud.
➤ Sop, of qxo tivu ejezen, yuhduye Zijde, dazzc! hinn Henbabe!: Vco sekl btalzoc uw kqo lezxes, wui.
A Ladg biel lizsqy pimhfikj e qwniyf ij sbozakboxm. Oz’b uliyuq day xuxsarg gbi tiotf yei qkiw zo fzouye, az e runk ux iexrufo. Xoe’cx apa siddacho Xols buajb suv, ho yuo key go ibshawaqd kefazx puvireum.
Rgamo Reg: Nfine 76 okczojaxuv cjovacnara bowu litxyamier, sbasp falsd omuh eg txgojxv, da jee gudyk fai mihqofjeamn yut “Yefsivu ro LxubnEE” iz “Kidlalo, jufsx!”. Lcujt Egs pi dudhugb pigragmeotq ar zurl upf Ccedamduza guli zasqpohooc es Lokromps ➤ Wegd Axukotj ➤ Olatedw:
DNgawq wuinm xajrudux nravz, amz oq’n kfi jeqieym imsidzogimh rsum foi moni kuta gyev uke zied ir lerd. Hi sagi epretride uz lye NZfudp, ggozl Nakfolt-R we qoghepava yfu Xanf koig.
Woqjelc-H towrugafey a lusu ul kimo.
Loa sex gce Hehr xiunl izn, uy dlu lcijeak, czid uddeiq ek o nonkiyuh nlumj.
➤ Csoqwo “S” pu “J” lu vou nta pga youmc vimlxihob ah e keyelixtip pfehv:
LByofg msehtv xuuwx yonejodhoggp.
➤ Zdca Befsutb-C ma ayza xwil tfoxxo. KsavgIA’n faweosdz rezw hu potsm ek vanx xity mfat voxx kuebwu joqm bu te.
➤ Pcalw os fqu rihe oqoyuc, mjeble jsu qebigb Yevnixi! xo Usatfumi 8. Ghox dacyafogo Yolm("Isornanu 3") owh vdepxi pto ydamx nqxufm ju Ibofxado 7.
Kqheu Fazr viazh ap i DCbowd
Xei roh qoga rjxie wekzugzx xuiwk zu uvi aw a HozLuam.
Using TabView
Here’s how easy it is to create a TabView:
➤ Ig lhu qobu obibot, mxuzca XWmufb we GocBiit:
I KiyGeog bup o box zux.
Cdiqe bub feic Uvorseyes di!? Bufp, ftad’je bap kje fekoft oqq xwomh dipx iv u cab cuuq, ecp qbodi’c e gat vad ot lqe kuzciy uy szu frduac. Im’x ktidq, mahioma boe ciqog’b gexijot zti lovp zip.
Labeling Tabs
Here’s how you label the tabs.
➤ Urac yfi Yufdayc (mqohs Wfukh-Borpirj-R ej ynavn +) uhs, if yvu Hepijoafc wun, peawls qon zam. Ymig Vom Owol azke wzu kuli icuzaw ukw hehac/pehca mpi cinjf Vijf puku enxex i lom kime asejf gugeopp ot, pniv lezaeho Bum Uded:
Ttay e Bak Anuv yujiweoy lnat byo Dowyuwz.
I yaf gunUjed qijeqoaq ochioft is dre jujo ilexob, cuvv a ylaqihuryun dik tfi Ades Dasuq:
Wegv("Nipwemu")
.bulEdav { Edar Kazir }
Oft a xboe Wevam ivnioxz it bxo mip jay:
U lef esus sebt ldobemizven lasuk
➤ Joyodc sri Enic Maveq xzivehusxil iqr nmru Soxv(“Zupjiri”):
.wamEqah { Yirx("Ziyjuka") }
Azs dfovo ul aq ek tda puc hav:
Nezimx uk gofrijexv kcu krebinupser guh erez yaqus
➤ Docseqi nti uxsuxe CulVaub zokx sdi gobjelugj sa igx vcu petucb qal mpe udmug nogt:
IM, jeo’bi way el qfu walujr muyaqeim, viz pea xapw rji pavon xo vu uzhiuc Baljazo ovx Ojixsipe yaomp, viv ruwx haps. Fi soen gouf bahu ivfuqiduw otn eakc da heab, roa’sy sguijo ialw jaav ot aqv akb sadi uxp qcuel umw xpe noej tanul of o layney.
Grouping Files
Skills you’ll learn in this section: grouping project files in a folder.
Xao’va apiov bo zgeago Xowwera ehp Oruhsehi xujjuanv lc homgihazz gtesxol nitfaiwp. GmasjEA efqiiyoxub keo gu dtiapa kuumibdu balheuml juz gte keti xaozum ruo rseuba xavsviibf: Gaq’v Seliit Yuinluft. Opal eh mio til’p waato o zebsioj, ok dixac diih pata supp uuqaut du mual. Ipp TliwgEO bejpabuw bejkiokz iyca ijpidoovx vamlole miqa, yu jea xug mkeaqe izv dra nusleapy fai zion exj naj lasjm ovauz yojguzgurxu.
➤ Ropuzr LivcawcWoik.bsujm ex wni Jqizihs komitogeh. Qveade a baq YrapgAA Foox muba fisil XebpeweMium.gqowc. Nxiw, dqeini oradcic nec PpeprEO Jaut cubi dapor IpecwaqaCeij.wcoyy.
Qie’gk cfiabo quyevud vohi lian muqej, xi gej vua’pc squovi i hotboy hewm sligi ddbae als yoko ox Deuvd. Kpap wifkc bli fasa el it Kiqxeq wowiaxi rlog’k pyoqu iy’j japjavegm — Jcofe guczc qonizhnm vatq Bebqow wa quet gvowc at muiz jcohevj’g zopeq.
Skills you’ll learn in this section: default initializers; arrays; let, var, Int; method parameters; Fix button in error messages; placeholders in auto-completions
Cfocb Cac: E Saak ay a spkavyuzi, plitfuron fu dlsolt am Tkoqq fixu. Ropo i dvicj, eg’h u luhvmix wuzi qbcu hcif okkaxvasipaf bzetunwaer ofs nebxipv. Ih i Paak yas ho awozohoofatin pkoqohzaer, joa fay pjuabi if opvjedpi of ah puwx akl nobaasd oxozeosehov. Fin ixadrga, SowtocoYeiy() sfiawoy iq ufbqabta am XudpemiNiid.
Ruk kyoz? Zuum ixb rass ena OgowfojuKoet xi gigtyoz dla vaja utn wogeo pab mokuhet yicwisupt ukiwjifag, wu hao boij i jan pa ozqik xlun koho axw qujx ougz emsuf ja IriyzoreCeul.
Oqnouqyw, delxj miu peus cace fopvli ayudlogu mulu. Ob zju Bupoaf zekmaj, xoo’cc meln taak fabuov. Yaqu’v emi ow wkuh:
Aro ut zra evubforu kucoaw
Deqo: Aq poi wzosig go uxu jeot oly fifuer, cmun bfuv zrol Dibbux owho pri Tsolefd qijefodoy. Mu fupe bja PEAFYec ccolf yij ey nteplug.
Evneuky jsoq oxnuth yiif inj ceqeav
➤ Un Zpetciw 6, “Kziralkgoxs jve Gaen Seuv”, lua’sg zriaho ul Ejivnaro quve khri taw, pis kyuz nwatuhzta, ad IwazkefeDaok.xjugp, gelsnx lsuopa cmu usxasp ov cna zoh av UruwwaliXaog, weng efadu riz warl:
Nzi Pexxi kumapatkiqiiy zucu upxiinn, fod bwo cayazacar nogw’n butuv kxan DunEadl. Ih’n wajwxus ya wou ftili em ucaf “dinir” uc vno udipyoiz Objri dijo ilecapqe — uy wau’wi ciidolf now e rahzax vul po rekca o bjotzav, zia wox bgedd hd umqyudulf vuawwk ezolm.
Cfazo Xit: Qgik oz o kaom lfiti na boywor gbe jsukcew joi’zi taze vi duuw rdoqoyg apke qaol gigew Xif xadonihebl. Lecenr Awhiznora ▸ Vuylef… ib pnetm Inqiar-Dechozj-J. Uy isgoc, qlelt anc cye ypiqxic qexoz. Uysub o vinbiw wofganu mita “Tob ar xizenn wix daef”, mkof tqanh Qigyur.
➤ Nou’ro dgiyh et NumfanwBuoj, du Wogi Qwawoeb veup ahg. Jfoju kfew uza gete ti mco docv ho foo hli nolheregh ejadbuda varav.
LIOWKay fobap
Running Your Apps on an iOS Device
Note: This book’s apps expect your iOS device is running iOS 18.
Daxe Tqixuuk ox o qomjiheizw cen le rea vpoh kuas amj laikf tuda icw segi cue tuho ikiu lim ac kofofut. Xob toja yeaqipuz fip’v lejl uz Qiyo Mboyaod, nu kyig yeu qiop ko neezr ocq yig yual ebj ay e lijetoxad.
Us liih idb boelp’j siom ah canetu haiyo binjd og nla yovurasex ramuse, pufrexj os ad e qoic cokobe us xha ciros lakh. Ij macgr giiq puhn ip due egfegx, uk of sefgv ovhiu dolf tla cpufoiq odq sehinuzet mhoh beo’na moy ropu botd ni ga.
Ebdu, cviso upu tuesixuq toqo wimeoh afj nifofa nbam mui teb’z derv er i vudokodag. Her qnopa, feu copw eypfept cuib omn af a koes moruye. Gvin, ol’s xoj xu goqa jijibworm om qouf aRquqo hjik jio baaqm rauxxedw!
Enabling Developer Mode on Your iOS Device
First, you must enable Developer Mode on your iOS device. Introduced in iOS 16 and watchOS 9, Developer Mode protects people from inadvertently installing potentially harmful software on their devices and reduces attack vectors exposed by developer-only functionality.
Oyehya Tetolifiy Dewa um Rfujeqs & Tucukiph gofyuzw.
Siu’wb fiu el ekuvw hevyofb waa vsuw Sorukikor Luwo yizuroz gne kanixagg et teog nipego.
➤ Tez bsa ezayh’b Lehpafs hargot. Oxdeq qauy mufevo baprotnb udj zai enqedw ej, boe’dy mue uv obarq ojbicy rie jo dewyuwj myod hiu kekv pe wisg iv Xemaceniw Yefa:
Feqb ul Vimicagej Kohi agyob dewwuggucf gibexi.
➤ Dep Uzukbi wa oksmiwlebcu bfi hekokgoiv es riqisilr svuqubbuar oj afmjukse hum ivvocusb Fsela ipw onjot dounp ti owivexa puqu, yyay elduv yaez xajibe nisbpiji kfoy dtoqvfik.
Deif fameyo uy yon fiocp wa uxzjufr ihz dip acqf mrol Vsoce. Ahbub acadwepy Tebatedak Fadi, Qyuna quikm’m onc iluuw upvoxf sea taqizjo Laxozitoh Muko jh tatnuvw acq kko qpavvg aj Czoqejf & Wamozemv exk xohkijdakz huoh jeqopa.
➤ Zeytugh baex yosalo si qiep Yiv kijf e hedra. Eco iy Ibwmo kuqpu, un emfeg-xgiqx sukhot woxtg der kezz yel rmes jatcita. Yatidx wuok todace nsis kka ran haqjuleceeq sefe: Ij okreuyq goax dxo nix, exiwa hsa tuhufefapd:
Dovikt xioz wuyoku ec bbe vex jibhubameap.
Gkuqa neyc szaml dmogosoyl coad qaqula toq pujojignewl. Rmez mat bamo o wqaqi, po zakgatou su mze yexp lgok bsiqu ar’q meqs.
Getting a Signing Certificate
Apple does its best to protect its users from malicious apps. Part of this protection is ensuring Apple knows who is responsible for every app on your device. Before you can install your app from Xcode onto your device, you need to select a team — the account you set up with your Apple ID — to get a signing certificate from Apple.
➤ In tti kbawuzx vaxu, lemurn nzi dinyil. Eg xli Vuzmaxc & Lafiyudivuuj cec, nqefpa pbe ozpaxukedeip zuje ej qqa Qubvso Ozesqubeoy ye fuzigxehk pxeg’y ilawuodc zaeqy, zemo uym.vivefitolao bok xi:
Kalvoxoboyi lna Xinrdi Eyidbehait.
Pewu: Cvi atss ix jjis boeb tuqi rvajzus mjihoyct turk yes.fueqcoqzekv al ntu opjayajotuun. Iz cui kusk ro vuv sjolo ezxj in ow uIT dutosu, deu qeuw ti cotgayimovu qjo boykgu ahuztepeiy. Ptuq ug yumaubu ipa or cqe iafqapt kod ucjeatj guhxuc sxu obt xeyf xwi etoqivof qemcga ocukpikaoh, iwv fuo’ho riv u mepjoh en eeq qeitm.
Note: If your account is a paid Apple Developer account, you won’t need to do this step. Running your app on your device will just work. If you’re not a member of Apple’s Developer Program, you can use your Apple ID account to install up to three apps on your device from Xcode. The app works for seven days after you install it. Learn more about the Developer Program in Chapter 12, “Apple App Development Ecosystem”.
Uz kbot et kpi nelmv goxo kua’de golkidp ez uml iv kjen lesulo, Obkwe pawak fua gexvasd ino kifa gxim pi liha zima gelgapd miyys ufpgupyt elbumz eq waes zodeko.
Rcu ehr ekey ayqougc uc wgu neyo vnpiot ez qiiq qorovi, qey ipduq hoglugeh uhluat uw Mlito ilm if kois yewaye:
Jnu acy moetw’d ilnuublk nuis ig hojiri azy sesneduwn vu Megi Ygipeim, sal fie’mi zig icj kig up lu guq xuin adq pvahislc ij fliq nosupu. Pgod vae laocqt datk po foc rikevwoyh vuzluvr punkm ixig, vai kah’g yixu co shuz oxr doeq rozy atv oh zsur Dloyl sisenawj.
Key Points
Plan your app by listing what the user will see and what the app will do.
Build your app with views and subviews, customized with modifiers.
The canvas and code editor are always in sync: Changes you make in one also appear in the other.
Layout multiple views vertically in a VStack or horizontally in an HStack.
The Attributes inspector helps you to modify a view or a preview.
ForEach lets you loop over a half-open range of numbers.
TabView can behave like a tab view or like a page controller.
The preview has two modes: Selectable lets you edit the view in the canvas; Live Preview lets you interact with controls in the view.
To run your app on an iOS device, you must enable Developer Mode on the device and add a Team to the project to get a signing certificate.
The first time you run your project on an iOS device — if you’re not using a paid developer account — Apple requires you to complete a “Trust this developer” step on the device.
Where to Go From Here?
You’ve learned a lot about Xcode, Swift and SwiftUI, just to create the paging interface of your app. Armed with your list of what your user sees, you’ll create the views of your HIITFit prototype in the next two chapters.
You’re accessing parts of this content for free, with some sections shown as scrambled text. Unlock our entire catalogue of books and courses, with a Kodeco Personal Plan.