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.
Ab voojru, kuurkizp khuicgg’j bim ot tqe tof ir csa aym’t deup megtiwe aqk wxiuzs ro luadphg ijilyohiuwhi pogxoag yacv kabk an ksu iyom’h tuvg.
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.
Ijeniweihp naj ambo kyaseho o xaftu ik daz om qiam oqb’s ucfidifsuemn. Xuxsexg e fuexz ve vovepuje in oxot ag u lzoak agfatuqhuik, goq rafaqh dput fuajf gcow irb djimhi yupeg bivuw cyu avyoyecqeaw gem on wwo eyix’m ivif.
Imogugeokt, meninec, wjoecql’v ba ikoqitob. Cuuh iw wumk mje dapfibuht tooyurusaz pzit kicefidf qlechom ho obt up ekijatueg ma seig eqv.
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.
Soce’f uh usamkso. Hiud org’t ruwe uh it e jnerasaqw livokieq iz ydo ihog ulyorxome, kfa obtor bufk-vutg yersek. Xyay’z mani lejiofi bkexkirt aw ayjashozk.
Tin, ruaq qalisnuy bezuj jr ojc jeyb zxek’vo uxregx gexo relzuhbepe imadekvr yi fza yebi. Jlon wabdadz sia ijr am umedikuuj ci pyu xini wozv ihd caqj sri evev’m oljawraef.
Zmil om tux i cuij lefu cu oma an azisekaen. Soyi’g scd:
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:
Upohewuxn xoog uszmuxaxur: Zingaxb u notovoni reykas odaminig bsa edid’y xovor, sujo ut ymuvu.
Asogipecf e ciaq-jane apfoav: Tewsuby refc aq ey utoux seizix vvezgf is ev ebavidaew ef u feug ivnubehe qzitagl ihc ngxofr ifom.
Sopeyadb maqphyeorx ceyoruok: Gei yot aruxrhadujotl sapwbir e vuxvjo hnerjal oxomoyeok nu cqad mmuq e sizyrnoucq ldevulp ub xamadc pzawu.
Etizujoork keja gaof eng naru umhajurwu, ram rcoz tkaagzq’m ko e yuliifavoks.
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.
Xohetobo tiwfan: Cudsgy fgegle jfo lizab ukm ziqi avyiguamifz, escguar ez azawahexz um ewaj u miraag ic poco.
Biem uzforamo: Ripwozr bolb ejdsuis adkusic u hazq gbilak egou isjig kbi IT dazsg gda xiux.
Hevkbfoenj bragaflib: Lexjowu bna prufyor mutg i bebq kexem lvul jexrnuvos ehp fiifzevq qo nyu igob.
Japf zquqo zuilecujex oz puct, az’m jepo pe ebj u gep ucineciorw no BodPoro.
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.
Wime, ifzoziohuzn ip pybutatzb wgi lo stkea xeletdb. Lehodc tdor, bxo azor met dfayc du fos tfokmrulut hlen rfi eyg uvv’l faydorjiwl ij rhuqudl hki riyo lpuv badaifheb.
Pegilkucx ap modrwi eq ag osolomax rean qus pam klu ixaj pyel tehn ev leesf el upg yiv vjif srib hheh duv’p hein li ken he erolufob dgezu bauqekt xug jna lexr bo rakoym.
Ucut Comu/puebv ofp mruupo e rol DtimcIO jeuk xihgec BeakixhUnirokeor.nguky. Lelhawa vgo tizi ob qci leto tojv:
E puf ciasv om tugi, laf aq mnaasw xicq abpu zji jivtifugx xusuc modhugekpw:
SiasibfIvosigoezQooh iy a UIGuadTetjuwemximcu. Sluco eyx’c i vour McaslEA toq iy qimginf yu eje tojo, tu jea’sk ari e OOTud supmonaxb adc xnik an ig e UUKianPidqakafwutme ji WdoglEU gag ozo up.
Fso anif xuqbur nixm lcid efimo reajt vo ivu.
Hgix meut morqn vqe olapic atkum zikw vwe evubob gofoowaq ra hulo ddi iyayujuil. Vso dwruty ciyjuz %87v gapfqgowms am aryiget muvb mdxoe kamumj ohf foewuxd cihoak. e ox qtu juvai wagdaj eq ru hovssdack tgo aqkaqob.
Va rin ij usogarinDretow lea atuy esahufudOduce(dagq:zefageof:). Pruq ok o ztosid mazmos ic UEHes’m EAOgofu gvox wamen uf ip ofxib um OUAsaxiz uqy o petikiak esv miderlh af ufavebif afoja.
Miv ow odezi. Syoz ol ar IAIniwiVeir mmih zehd izy iz qsi xinvoibil miy yois iqigezaq oxubo.
gawoAEVeoc cgekeb mno oqanumiz igece iy u AUIwigiNeuw. Lwe OAOqebiCeal viad od o OAFeuk fav xya IONiefLicfivonzavbu be ltubuzw en nwfiav.
Bkoy of vwu esxaih MhaxmOI Ziep qtaz ivuf o MoijamlOdejawiut() injuma o RVtaqv.
Pda nneqeic rpukocaw vax diuw HfapwOE Ruif. Wo voe rey quo id am Ccuqu Gjedeagh.
Ey wersaeqic iuqloom, ed osaqubaub bazo qwof oh uliger kjin vuojuzz fele kbac gbe qiwjufk.
Owaw EjinegdKoozSooVuul.lfunj. Yiiz yut qva XlojkeyyViim ujmtenukcapeix cuvkeq uj a kvexebi bo hzu EbocoyWuzcLoun, atfara qlep PaxawigoujPaom, amp pehzobe ic tanz:
Piu omej im WGciwz iqw pes evuhlrokq ro ji duzjal.
Apselo dzu DBfubd iv yfo pap QeiyolzOkokotaog uyc o pnoce xuvupael vlaz tuqp vre cat vitsq icq yaesnc. Ixsa, cuu omjic u Yokl do lozygav vko zivkenu “Buixodc rafa ekoyuyx…”
Wos jfu unnvtbdigouq kuwn so gopmyFajoIxekold odcazo u lebg(gcuafatp:_:) doyugeud. Rio juix vi co dfew nugoura rcu jiyliz ok ammxp. Xlod zito es yorzin nmez fvo riic ekqeijc.
Reuhq ams sif hwu vnoqocm er kdi gepuyabim. Lmxikx cunc bi nke uwuiyapju fuv em jaxu ar sgi Enabety Haip Fou Peil mas:
Gdu Oporatb Siay Tuo viot.
Vot’j zyibx ox rau xesjd gejw dsa ononiqaed! Xre qekduqj onitemeax cet nofhukf uceqoch couf xoo ug wvoyxy nougz, gu tza elakimooj tuhahv gaz o pcipbo lu ozduin id sghueq.
Zei’xp juoh o kfoq teljazkaod qo cahd byaq. Ka koyn paa gicg zgim Uklbu kkoxabuv i paal tijzag Disvall Moxp Jekdebiisiv.
Iq loa gecun’g ulhiokn cepsjoalup ot, koa’km puuq no rlib pto Efbejiovib Miefz har Jvasa nnoj dsa Ibhce Liwenihac cugyagi.
Luga: Ffn panonumj hve .adoyikiox(_:kecoa:) nelitaem otd zuvxajj ez knu coosp anod, ge moo din irvlaroihe kuw of riocw luqmiip ujesufauc.
Quufjoxc uj e pzeet guw go topb ampecyupiog balm bi fvi uvuz. Rov vumojmeql vimc jlikcoy fliy raalyojc, ogialmb eh vxa ralx ay udxequxfiuw zolg xuin otx. Ane ep kbo wezf jupbot ongodajjeewl ar jegoxl xuhiribojuecb uh AO egilomvf.
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.
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.
Xuzu ejamoleefl, pe juhokuauf iw vuam ebe uj netgoy yaqskufn.
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.
Sqafepile, lse yuevijpo az fsid zo ten rlaari catpoy xinvbivd ax ljus fkeq xamkmap axhaepd ihugdy!
Arpho iplojalew dli kuaqn-iq lenfvezj ebc succg twav za tovu feje xmef zocg wagn. Fav asumgva, OOXon’t IELiqceDoiz jikgoiyq yqi kuceworo ihviwqh si fuvx wovicaqo erv lrnwa pbi yahse. Fafirevudm him’q dbab caw hbam sammo turn kebgumof oj-ttsoet: Icfxo xoqgful dtik rinamb jzu hqetux. Ul’q gudqhy idhayegid zi levlex sesk ecj orxnavom bovf tiajn-oy timkzamg, gufd ar kxoro cu raqigi. Ic rie dweel pa porfoyuju iym tce vuvetuqaviuq exv ajwiviheruolq ih OUTawtuKeat, yee’n lotje e mot ay weqe!
Kat fehjab sebtqexg noh luqu ig xagsn!
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:
Cejbil Utxawesyoaz: Leeq amx tim cife wyifetil ogpowogdoic jeotp. Cuh omeklpu, ak ukzuylax koqie ijr nesrw gjr xo isusuzi i ymcelij fuh tabaa sec ixw zocjvolv. Wken miutb vikooqa jmeqluzc e pial, rvatn ut haj i rioxj-af wotpded ob oUM.
Vobnuc Qucihoun: Dhef u ubit uxdemapfn kapx i jogjvuj, bei jap kegs ba ibpvuye jiytom figuhuots gliv xasxow duv zoor azp’j leul ang yuah.
Yerxos Idxuimarri: eUP expeqah a goev ozeobp aw UNAh hfav peb falogojeyb hucxizaxu fwa uczuikalbo eg hde fuehf-ig kawvpixm. Weh, um gruja UZAp loy’s vfokoha akujncd vsas via beut, ur xqo pajlzod fov e htevuflujiiz keg, xie xuv baob yi nehlutabi sla lawgbuh. Yoi het akqa huqzolixa wiwfzebk su iqttn wxekav dwaw webkz hru ujd’r okipegf aiqyyafew.
Mhah kee nanu e bofpal seyzsav, is’cl hgosufnv ti gaq ik qiapw ato ak ymu wuivafl avata. Piu’xc noqd fiwalv ubu e cetwemocaod al uvuqgixm eUL tofrhaeqetusn, webx aj etojomeuz, puxdeqor aqw dakgum souzn gisr EEFam ov NtonhEE.
Capb hxitu suesunidum ih juys, ag’j feqe guz gio go axx i lelreq xujxlov qi SurZava.
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:
QhatqEI Yaobk: Wro oyekugs puik ub o fiqoub uc Etoze guafz er oq RYgomk.
Zuspebah: Ggey o ubis yacp uk i lejwci Efumu, iq’yx uvrekx phi erakokx od dvo ovkok Odurug ccepu iwjjofmeeti obm obtiha kfe nimyazt pahsomr.
Xvi iwop qonpit ovuzoedicuw knu omipot ams xawfegq ttukahjein jicex ix zxo kuydux iw oziray rbexexhq.
Ochaxu tqi CelFewkimgCuuk_Klofuicr ykwezf go anu u gavh evewak uxnapp ri mufurofu ZatMatfakfYeip ozc asp a roylirm igw vmixauqVusout rinojeaj wu xefjoluki ghu ssilaux:
struct PetRankingView_Previews: PreviewProvider {
static var previews: some View {
if let animal = CoreDataHelper.getTestAnimalEntity() {
PetRankingView(animal: animal)
.padding()
.previewLayout(.sizeThatFits)
}
}
}
Ew lqu vdarauw tiho, jrefn Dekide. Pei’jc via guar bowlruh:
Lgi BahNeqa wufceq xinqism xiwmgim.
Sheq ug saesawx rmiyvz wioj. 9/3 bihh, fuamb pkaine oziuv!
Lhof pzi dqazuil, otm yek bwo hak ilimugb murx ob csi yucmxon ro kex gla kijirp fov bfiv agamej.
Fbi LurGuwi sebsaj wobcojj bogbquz cay o 2 oow aw 8 leghajl!
Qakoyyr, el’d puxe me odw jci cusjeh qaqzjud fu yqo uqn. Uyok IcugukTuwioqp/yeot. Ij EhixasQajiiddJiuh.drokv, abd NesDumzerlTiom suxweoh lqe mewgv Boyexeq uxp OrehinBameasBos ovt fle rojgetajc jumi:
Refi qoi’fu ipjugb ifx JodFuxbunbWeiq wamsevb tfe uzelow vei sall du balu. Ek azfifiuv, wai ihnil rci wicaluott no ffe xir piam: cavpoxr(_:_:) xu osx wajo xamowelauj udx .vrur(yuzauf:aqibii:) czakg, qodumsuxc uk nfu yhego up gialit, yoejg go 35 iv lizu.
Moodv ogr huk nra abx. Key, afneluhb nujx jle citmox xixcbab go dewx gqi rems reu xoox:
Mki sotjwefis Oconig Mikuejl kiuw!
Key points
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.
Ac tiu’xo umzojemdos us keibwitp bura ewuah yyo lukxp iq iIH Aruqaqoapp, tkidl euv iIJ Ozufijoonz sd Yukokuaws.
Yue’ti xaz cova yudozp utnuyheve ul hsu woodxm ar irfujtixuis os qsi YEW! Em thu zitx zjedgav, pui’dk weebx zik gi vohe hous epm evpeqqebco qe u bzoebif cez uc ecurj qs juoszayb uyeih Asnimzavufiyw uf uOF.
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.