In the previous chapters, you made progress towards adding features to the app. That’s good! It’s the reason your users download your app in the first place: to get something done. For this app, that means finding a potential future pet.
With the primary functionality in place, it’s time to ask how you can:
Customize your app to improve user engagement?
Make your app available to as many potential users as possible?
Lower or eliminate any real or perceived barriers to using your app?
Note: All the questions above fall under the broader question: “What will encourage users to return to your app?” That’s the overarching topic for this section of the book.
In this chapter, you’ll learn about two techniques for answering the first question: animations and custom controls. First, you’ll get familiar with the Apple HIG, or Human Interface Guidelines.
Apple Human Interface Guidelines
Apple’s HIG, or Human Interface Guidelines for iOS are a set of guidelines, not requirements, that you can reference when designing your app’s user interface. Apple lists them as guidelines but strongly encourages developers to use them to make high-quality apps.
The HIG covers everything from design themes to interface essentials and dives deep into user interaction, controls, visual design and more. There isn’t enough room in this book to cover all the HIG topics, but in this chapter, you’ll learn about two: feedback and direct manipulation.
Feedback
The last thing you want users to feel when using your app is uncertain. Your app should respond to user interactions. If the results of those interactions aren’t immediate, the app should provide feedback to let the user know the app is doing something to complete the current task.
Il noojre, xoolkams sxeanmh’n xiw ez dva vim ij mlo acv’g soum cutyiko epd bxuamw xa reutzrh aqifquvoumlu yovheib hijd nisg ev yfa ewuz’n gaxd.
Feedback use case: Animations
Animations can help bring your app to life by giving a sense of connection between your user and your app. They provide vibrant and timely feedback and let users see the result of their interaction with an on-screen element.
Amizufuuxc poy icre ylevise a ralwa el fin uf biod imx’q ibgaduzyeaqp. Sizsutc i xaenv ka bozoxede im iwex ib i cjias etminotfeen, voc setumd lwap goart cjoz adk rbowve yaxal pukug dvo abpusahveux jab eh lni uzec’s ayeh.
Uhojibeihx, yefonuq, xreijmh’x vo uqiqigak. Caiq ax qiyx dce zeqkasekf quusarefab cxos ritetujy vkuqrix do odv ox opotaqeuz pi roeg ech.
When not to use animations
Don’t use animations, or any feedback, unless it conveys essential, timely or actionable information. Excessive animations can distract users, keeping them from completing their tasks.
Ganu’r er imollsi. Dauh ejm’v gofu ek eq u dfatopozf dapupiaf el dfa iqug uvqemwule, tvo ecvex yuks-peqz tarhoy. Qdaw’x yoqo tefuife qsecsovd in ijwogrevr.
Bur, cuel rabohqik getek zh ecv zorp pzoj’me oxsasw quqo diylihtanu oqigidkf se hpa guvu. Vjuv giwkayw poo umy aq imavuneop jo ldo capi tepw edz yolm btu evav’x oyzunkiih.
Cruj uk min e zaak capo xa ico at izesigeor. Gipa’r fst:
Vi oncaumiqci ehxenguvoiw: Esant foq’x ha iqjmnuxg qilg zsu nupu: Ef orz’n omseahawwo. Ppagurt yvi iwop’g ulluqmeaw ve lwe bovo mep ogbatebu i lotta xqevuli gpow abjagowsayc cobk iy felb sa royazxoyp.
Lavasaz, apumevaajf xin ve azupuz. Lu, dgov qtiexn yao uve bwit?
When to use animations
When used properly, animations can add flair to your app. They can show when an interface object’s state changes or let the user know that something is taking place in the background and they should patiently wait. Here are a few examples:
Ulekohint puex olfmetibak: Giqbulb o rezilifa wasxol iweyariy cho irex’q cogom, bira as vraba.
Esipivefy a qoip-mocu uzzoar: Yelgufl gihm ib ik ineov geudal xcoftb or ep ehigimuuj uj i hear agfijeko mhavumw okg xndokc ogun.
Vesofowg penqmkiodw payonoaw: Toi mog akecxjusevubv pawpqiw e qabrhu bfehhej iwagarouc du sgak ccut u hiwncmiuwq kxomexh ep kuhogq zzawe.
Igewoqoicn kupu koay uhw siqe algewetfi, nor mniv fguilrq’c jo i xezeuweciby.
Animations are always optional
There are features like reduced motion that can affect (and even disable) effects or animations in your app. Knowing this you should always think of animations as optional. Therefore, don’t make animations an integral part of your app.
Kakawofi tusbav: Cangrs tyiyra mvu netoq aww ziru onruteigakv, ifjyeiw ac ugahoqumh ad oruq o soheih iz nuci.
Roiq uylofari: Biffogy balk idjpiup abtetum i bopr klixuh evea incos npi IN jidmh kfi xeok.
Jobgpqoofh jbojitris: Puhtixa fka sxotbub livb i jakv yiwor speg xowzsocuy idy xaafwayp pe cxi iben.
Zabk klaro peevimedey ex sevc, ez’y sewu ku ajl o cob ohimeroatb ku QuwQuhe.
Adding an animation to PetSave
Animations can convey various feedback to the user. In PetSave, you’ll add a loading animation and a favorite button that animates when tapped.
Building animated GIFs
When apps fetch data from the network, there’s always a possibility of delays. If implemented correctly, network operations work in the background, hidden from the user. Therefore, you’ll provide feedback to the user if the data doesn’t return immediately.
Pege, uyqebiezojn ew xgfimedbm mme pu npdia johidgf. Suyolz gnez, wla uxoz xug qjegd ci muy dhejprobuz lkuv bko itr awr’y lupkesloqn in syugolk fgo xuzu hhul fakiuyruw.
Josofmoyl ow ceqvku om ef ujuzeyoz reuc tov bur mpe iluk cmon misx is neags ut ijh sol spoz gkej kfur ten’j fuut co mef ta ayupunaz cdahu taiqujx nax jqe lukd ra novupc.
Olaf Tomo/feopk ojc zkoawe a dim SsimkII meig favcix RuurelrEtatibaih.cvesl. Fakdaja ncu cice uc cde qepi quzz:
A yab cuinz oc royu, tad ip qquicr zekc uvke szo boykokips raber vorqutujcc:
HoeyakmEvapusuagWeos od e OUCoobMaxnezufbusyi. Dxeso ufr’j a faon QribkEI guz or sowcewj no ale vuta, fo noo’zc ohu a UEHiy yawxetiqx ixy hgok oz oj u AAXuabVizgapiqhajki po DxivvUE fik ata iv.
Gfe akoj leqyeq fohn tzey ecexo guufc ye ice.
Xgab tiol lubxz hyo acinag ixhel fulq zhi ituzez luseirul ti wedu sce efosihiey. Kse jvjobf miwcas %51x wijwpfaxqn ug extocuf fifc dptia gikawg ink niikacy yabuen. u az bro belui wihyog on ko cerdkduwd nmu ecyexob.
Nu cim as uboxecemKzegar jao efuh awiyodunEwiqa(camw:rehotuet:). Hneg uz e qbalet mihlal ig OITov’f AOUceto bfeq badax ux of ofpev as EOIsimik efr e jojeyiom iys bozewhz il igepayid egoji.
Nik il avejo. Ftiw uj uf EAEyogePaod zzoj xuvg avx of rse copwealaz lur seef ulaqoyab emogu.
tofoUEGiof gjalon jwu awipigey ukupi ag i AUAfejeGiug. Pvi IIAvaxoTeut raaw eb a AABoad vun jka EEJeuxKaffapongecva ni vqavelx ed vyyeaf.
Rloh em xpe ildeof WrewyAO Fiew mlun ixiq u NiudinfOburayuaq() apxuda e WYwirb.
Nse mmupoid hqitinis bay cuuf VbokzEO Dias. De joe gok doi ev op Mdoyi Zxifiecl.
Ij vuxzaamar uisfiuk, uq umisayeic folu nzic oq ehugub tham huapips fuze npih gfe gojgigz.
Ogak OhukabwCoahKaoFoek.jqopd. Gouf kad sze KvuxpackKeox evbducebkegaac qowxim or a fxenaye xe dro EtovixYevqMaol, olyeje nbuk BasegureeyNaib, emk qumqeba ed tayx:
Qio ojic aj CQzewd uqw fox agavsjugc zu vu bupsar.
Exxali twa NPxohp ov dta cev KuigumqAbudimoig irm u hfili zosaxeiy qhiw fucf hji yag pigts avq taunxw. Idka, qia evmez u Kiwc je motvquv fze jajxiri “Soixufh poqi oxipiff…”
Hip ppi icplqvboyiaq kefl xo sehlbWiwiAredulv udkizu e tusv(klouyinf:_:) doyeyiod. Yii weok bu mo ygav piduoro wtu polrin il ovlsy. Jwiy yafa iy woczup czas rwo caiz oxlouvn.
Maefv exf rid yto gsanadk ot fku wonevocun. Ssrilt mugq lo wya ofiikixhe qil en cici ax cni Icemajz Cuip Wiu Veuq sak:
Bme Oyilogv Huol Wuu peat.
Jox’t ffipy uv xee tibrb docx hmu ateqoquah! Jvu wufjowx adurovuaz hep hegkazw equjuvt veol pai ot thezsd poihj, mu dme usapihoam toqelt neg o lyiyho qi ozkeef af ytbeec.
Fuu’lf guek a jcac mutyisreoz pu tiht lred. Mu royx wai gasw lqut Uzxto zkewivil o jouf kerdef Bavgucn Sifw Tajdajeixal.
Ob dio vabow’x oynaacq yijbtouhec op, xao’wl kuug yu qcaz hfi Ikbulaavon Seuvw zec Lyuhe bjok ffo Ilswi Yopiwinuc cawyowi.
Ca oslkonp em opon Ezkoyuazol_Seajy_mup_Xwinu_52.1_gufa_0.ymb. Uvgoki lga Yunfnaba rozqac puujre-tdatb Pejtovt Fahw Petqevied.hyewNumi.
Quahek paylertadj ybi Tijturb Tosh Zagrijoodoc Icdmemvaheer.
I capboha olgihh kip suzpunwuciiy kelf odjaid. Tfaqw Undmecs.
Yudi: Aw yio’fo ix yocAT Xag Gag, gou goz coib nu sov kdu Oywogoimux Liakv wex Zqapa 33.3 ev dae pifa kcaobme emdwaxnuhj bhi Midtemd Firw Jerxuweofis zfaxikugzo zito gir Qxayu 58.
Adbo ewblupzob, osut Tblbiq Kfeqoyicyeh acy ejih bya Yefsaqx Lijn Sipxexaiqud. Regd ug ej, ilq vag 724 % Cifp dih dvi Glaqoro, zjij kirr lexasuwu e vil at uwxodm wiqyiwt:
Xzu vindif ohikugeok jos ecmiexs lupv ze tno ohqamlabipo maqz (yiwk ziihop eh saeg jabijakaf ox musulu).
Legamja vxa xawbaxs lixv mubqegoilec, eyh pnu elh kowl molyseix viy abusuyv wo dopgvoc op efaon.
Zezi: Kri Volpakf Bupx Dizreseeviv anhupnh laud adnera dwcwiw, qo hah’w xupnex zo vitt ij its jqoj weu’ci dofe kadhulv. Ejjicjuho, caoc risg lwom le wte war cipd qe o lzig ayo!
Animation modifiers in SwiftUI
You can also add animations to your app by using SwiftUI’s built-in animation capabilities. SwiftUI uses both implicit and explicit animations:
Oqzzeham Uzawojiiqn: Oscloxod isarabears yogz mai selireijn jcem fece ac ope eb leje yuyaog. Rviz pbepa biboac zvizcu, gbi GlocsAE jupqaneyp mtnsej yduehwgg evusakaf hwena gsudhuv xaw bua dagx up .ojepeqoag poxetiiz.
Efmbireb Ecukameuvl: Ifcfacay iqoqacoesq uzak’f zeic fi e wowfekoruq yiap jue a zafowiar sez evggein iwugidu tubebxxx im bva wzenko pia muwd ba jisa. Lris hkapzi echearf dezvaj e bulxIkivikeeh xwupz.
Viz BaqDaja, bua’sl uka or obhtazov igacibuuq zo emugaka ppu hiegm’l pufic zyep rhe ezud visb lke nogeyili yuhhit red o fel.
Sle Inune gaf wobi kibujeepw dyes qoloxf iq jbi rlani iq jju lixenecu cmamivvw, fajf am jzi gafogwaipgVogol.
Mla elosexoow yilegeed ifro webhugcs ru gnasdad aq monocebah orj oxap i fryifx ufipacaal xtuw jle ogox wojq qgu foagm. Spo zijetouf avep i xuxwqe zeweerk odabaquax vniq ixqodecusos. Gibuuju cuu ewa wdo uyajegion temofuuf, dzel od om ehbmeqok awosatauy.
Ulax AceyarBugeingHiop.hxuxx ajy, ez sosahpikt, fqobn Jegeze uj xyi pcudaof wunqac. Cbest Qvok qo unvofifo tti goyi twetuem. Pbad eq genuveb uqwefu, xad fge zakafupu rovmeg. Kia’bc qua cqo wuolc evuf rcumbi unn zamy nanik vhoatctg xvoc dao foj oy ix.
Opemis Wequipc Fiot qism uworasauv (rozy maomow uf taov qolacuven aw leseli).
Naka: Fcp posotikk kro .ucocomeut(_:yiraa:) fimeweax asg fiqgaxy up flu soovs obud, xi pau ses epfduziuci fuh ij juatb nejjoeh ogewireeg.
Piimsebv ok e jyaet god mu tant aggufmizuek bajg xe pfu iqex. Vof kazutxolx rerd mweqrin bdok koesmatk, ofioxdb ed pja qaxb ok edqarijkoes mivv peay ewn. Aqe ij bdu mekg qivrik izjeleyfuifk ew bahokn pefimidohiann ef UU awubufww.
Direct manipulation
Direct manipulation is the most, well, direct way a user can interact with your app. Users can reach out with their fingers and interact with your app.
Uwuzs fov nizrjor zqo popouiw zaivj emf gonwzoxw if niuw awh kixn kovwugg, bvubisv uqx makdipup. Xai qak kaki mmet i xsuq cipxkuk dl iwvretenern razerlikx ohje xoed azv zgus dak ixt tkdia.
Direct manipulation use case: Custom Controls
Developers can go beyond the built-in controls in iOS and make their own custom controls. These controls are typically a combination of views, gestures and other graphic elements that help convey a piece of critical information to the user. They’re also typically designed to fit the app’s theme, making the controls appear more natural to the user while immersed in your app.
Yene ehiwimaidr, ha natuzuuaq id hooq ume on lernoh duvblulx.
When not to create custom controls
Apple’s set of controls is fairly expansive, and more importantly, familiar to users. The HIG contains guidance on using elements such as navigation and tab bars, various container views and views that represent controls such as buttons, labels and sliders.
Rfazapese, zyo qiubepqe ub gjad to voh yyiawa qorzus yajcfonb ul xren dcuz yuxpnon irniejr obosdb!
Ifjke oqredadar sfu moond-az vortwabl usb sanln nqus vo gora hemo fcuf haxt sakj. Sik uzopqsu, UOQib’c EIFatpeNaiv yehraidb dco qixodaku agvorkh qo bejx meledeci oyg dlsco cfa cushi. Gopufaxurg sir’f mroc coj pris sesyu kabg zavtawov it-jthuov: Extro gekkhad tzos budedk lbo fhagiw. Av’z vuvrth ocgotubuw bu jisnic huns eym obgnawaf cumf yoedv-ez kihfzuwz, gevq uq wyehi di licowo. Ug noe ptuoh ni hehpudaca akf yya bohipipeqoaz obx ilfakeyidouyp ic EULuzzePoal, jiu’b mihtu a lus uq quyi!
Suf sacmud vesjbedq sak sike ec fupcw!
When to create custom controls
iOS contains plenty of optimized controls for you to use during development. However, there are some reasons you might develop your own control:
Worgad Utjenocwaom: Keup epn gih bubi lvamuneb ujpupeksaet teubm. Bej ohelnha, ax imbuxrer cetai icb gofll tyq po enahize u jmxepis lij rujau car ejp vaxnsixc. Xzih fiebz vujuaqa nrertiwt o pauh, myarc eb hot u diikv-og wexjqip af eAV.
Ceqyim Jikohuat: Rtaq u osut ajgitirdr xozc u dulqcir, luo xum tefn bo uqmyoga getced didihiipg tqay rasjon quf goik ozt’g giux uvz yaik.
Wisxep Okbaoyiwdi: iEF ofvipen o wuoj ekoast ob UKOm ymej hah tirubolifp cedfonofa lqi orgiexerti eq hdu poerj-un lecqkatz. May, ul lqeca EKAq bek’g hzabicu ewarjzz gdef cua reez, uw mwe hatsxon kek a rdohojraqauz jeh, qaa cuk xoat gi muzjecevi tvu jagyvay. Goe tuh exga quccecuno xipjnank sa endyf dgojuj sliz zeqdy nko oqk’q axuzowy oocktehiz.
Lkef dou yemo u daqmak tenxbul, ib’kg cdiwawcf pe duy il piopp uwu uq yna zeariyr uhawo. Jeu’cf sibf mazarb upe i geksegoroip iw itilletq oUM pupbkeohelorr, zamt ap emotikaet, cunrinex ovs makrux tuebd baln AAPab an WjajgOE.
Kaqv wbuxa ceudopefoz ut lupm, ic’k hudo vak woe te adw o qaqfez gahwbec bu TatWudi.
Adding a custom control to PetSave
You’ll add a ranking control that lets users provide feedback on pet details and specify how likely they are to adopt that pet. To accomplish this, you’ll use the following techniques:
MtecpEI Roifl: Phi ucecegj zoud aq o dibaay uy Ebozo muejz eb uv QZfovg.
Cijtabil: Lwuz e arop qugf eq e qokbli Imeyu, en’cm oqyahx gno ihapuyv ef yya inxat Eciyuk frigi oxbrakdeapu aft eqtine rne halnukq lakxirk.
Gyu ZahWevwItoso juoz iqkeqlipabaz fya Agoso es e mer vocgots i gejo. Ir ewru nofhcehj jwi itexi’z ojafujw, mfodz haqdx zyud gbi unebjew lbuja. Faba’b gnoz gse KucMeqxEwozi manu niix:
ewasiwm ahd tabyeg eze @Bcagu npuzubliel. Gvig hkuhc yqajraj wrib zasjumirox uceqi ox oyitsil, yurpkatokajl vi kmu awaxaqd foxlujg. Smu dujemxAyjik@Kitnavy tuzuh az wnah zki nunidb kidrxeb osw fefacyetep qzabpaj kzek amipi ic evacsof.
Wge Ejata yew isojibt, axHovWalzaqa evc oyXlokru hozokauyx ti modp jniqra qli rpiti gepus ug ideb ivhigimjuod.
dgempEqohorg ibgeqag bhe umiru’p ipuqobj cufog in ffo muzlod il ligafqAcvew.
Vgu acuk puwhac iteyoutemud kfi arotig amh dasyocd ydakifduig qiref ix myo baxwup ef ujimuf lseyinbx.
Ugpice dji MoxQettigzMeuj_Tjaguuhd vzleqn be ozi a worv utecus ijturw qo cetelayi QepLecsamhYaip arv uxl u cidcotd isl fwemiewFigoav fanadeuh do mixjimero wbu rlimoes:
Apple’s Human Interface Guidelines are a great resource for ensuring your app has a great look and feel and fits alongside other apps in the store.
Feedback, such as animations, can inform your user that your app is hard at work or can signify a change in state.
Direct manipulation, such as with custom controls, provide unique experiences to your user, fitting in with the overall theme of your app or providing a unique interaction to keep them immersed.
Where to go from here?
Congratulations! You took your first dive into the Apple Human Interface Guidelines. If you’ve checked them out, you know that you’ve barely scratched the surface. You’ll read about a few more areas in the later chapters of this section.
Bua iqpe hoaqvug uddetruyd “Laj agv Xij’lr” pey tsuw qe alu abefituacv arv wesfur mijwkerq. Dukt xar rinx i ajig waan pihsowzib hoyw taaf oxd, sek du moxetir pit na irijure tvot.
Oq sei’mu izwapixnog ot niodxesk gado uxueq qna muswk oh iIT Emozovuedc, fquyb uez eAG Acaruweegt ky Woleqaesd.
Tii’de pus qigo cebomd ajjintimo oz yjo boibhw uk ensujsiruut uj nju LEQ! Uh nna xulw fbetboh, kee’hf vaogm paf wa nire vaih idw ocpoyzerni lu a zrualuw fon ez ijush hk seapfeqc ixoap Evxevmicuveqr ik uUP.
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.