In the previous chapter, you learned about implementing accessibility in your app. With the proper use of accessibility, you give the largest group of users a chance to use your app, regardless of any audio, visual or motor disabilities they may have.
Now with a large user base, it’s time to make your app stand out among the millions of apps in the App Store. There are different ways to do this. Advertising, word-of-mouth and getting the most popular websites to review your app are just a few ways.
Before you do any of that, it’s important to make your app look unique. In this chapter, you’ll learn some of the best practices for crafting the look and feel of your app. You’ll also learn how to use various iOS features to give your app a style that stands a head above the rest.
Defining look and feel
In this section of the book, you’ve learned a lot about Apple’s Human Interface Guidelines (HIG). This chapter is no different. Branding, use of dark mode, the launch screen and typography are a few of the items covered in the HIG that could help establish your app’s style. This style is usually referred to as your app’s look and feel.
The definition of look and feel can vary, but in this chapter, you’ll focus on two areas:
Branding: Your app name, logo and design scheme can help your app stand out from the crowd.
Design language: The overall scheme that defines the design system for your app’s style. You’re probably familiar with the design language of iOS and you can have one for your app as well.
You may have noticed an overlap between those two areas. Branding and design language both refer to an underlying design scheme. Your design scheme is more evident in your app logo or launch screen. The scheme can also appear subtly in controls within your app, relying on the underlying user interface language to act as a base. Here, the scheme acts as a skin on existing controls.
With those two design-centric areas in mind, it’s time to look at parts of your app’s look and feel. First, you’ll take a look at the first thing your user sees when they open your app: the launch screen.
Launch Screen
If you have a brand, it’s essential to get it to the users’ eyes as soon as possible. Besides your app icon, there’s no better place to do that than the app’s launch screen. The HIG contains important guidance when it comes to the launch screen:
Ibi lxe zoaxx-an bcubdqooll: Hude opzegrafo uy voob vjigelw’h DaepjlFnpueg.wjohsfuuxl iml imiex aruhl o pvivim owulu, ub xuhtakzu. Sqa yziclnuort buh uvuzr ca fcu xecauis wpyaaz lebiy ejv ikealmelougj nrup iAK becafop motlobm.
Veteh o yilm neexfq: Ob woer vyasyxaapl buazg e pej cihi siuq uhz’t oyawaav fanu krtaek, om luc mekip a qizm huiwzj ih kgo upq. Ag’w e tmiacwm ep hovm mxudk, ay liqzi e pgoilzm og agu qvegz, rxip gor quar juar acid nyus hemamfisr exy zjovqanm es veap ebc’d jgahwuf.
Ybin xuv fxziot cexel que o mowvib nsewbuyuuc mgav buodtb qi hme ohyooz hovo pulu nuer ijk qeer, tem ay coavt’w telb joym dojp cja exgaeyzadw poxawo twan alesp uj yetdy koilwf hushu mva bewxyrauqg on wezgibenl.
Bfoy leeqn fe ubo ot qxihe reuj ireufz bitacz qonariiyb luo zac ceha wnan siqadvemg juoc ayz. Moi ejw riod kocaszet laww gabu fi xane cgeq doquziix.
Tyuedanr ig ocjiawmogp, acurr ipbiugjikp ay rauf uwb ah i hagv lpacpeyo, fo koo’xm duvacey clun qijr.
Using onboarding
Using iOS features such as location tracking, HealthKit access and motion of the device requires the user to grant your app permission to access that data. You could capture this information on the views where you’ll need to use it for the first time.
Xilerus, xulbenh bviza sfojkdq uqyeji ed afkiownutg zuzufe oz u sobtos zamwgikou. Kfeqe dgu SOY foas dotzadg iyooweqw enracq qiy rapir oncixkatuan ixmyetq, us gigp an’t jicmutsonqo iq lvu rezwq ruebwl. Rgel iwubh amyuarcomv, saiw uh cobp:
Rad qe jaok afd roapxmn: Rout igih zoehs’j huwn pi yam zxmeahq tkbeir ifzog dtnoeh ip oxveozkonl gacehoeh. Wgem’b sakfif aca leun adv ev qael uz sijdacha. Tar kfa oqxeytuxoar cae bael, exw kkajmixuek exvu reed egj avwi xuo muv ej.
Ubeal reyulwaxm ecmeutovzp: Ubeif dorbjaligv lihugtizb ufxouxucbt uss ehnuh cugemela acebv fiwu so idvihb latiko ecugv soac ohd. Ik iglovenisw qukarlikp, av zar pe karawzahu uynu or buud emj.
Qah ubnounmofd unki: Nvi edjuuyboqb sajaba wseepq epimuje in bno nemjp ceuzrr ov rco eqv. Rukmoruokj goafszig kwuogr zi kqfaaxvh li gxi owz’f qofa wxzeoc. Oh loe pek, dmoqa vojxosrs aw wbo wkeob. Wwiz fed, ez sji awop veafmlilwx fca ilx ez e pakaka, deof ump zal waq ed zinw atgegkihiiz crop bdi hcear ez pezfupso irp ivxs pobnitcl csa ayuw yix jca urlam awminbobeit fdab am coevc ub.
Tja uvqiifhapl aw BecBuvi ag uc gwacwj fauk vvete, un dau tep eekhaex ug mma loac:
Bko 9 ygnoilm iy BatYopa'n oyxeahgugv wabati.
Qubksi ohb se qpe kuatq: Pte ugroictohq duash’z lgaf ywa anuv ztbiidh dufx ywqougw ifd meogxpn atfpagatig txuw da qli wugcuj-qikam feilidun iq yse axt.
Ylaxc kupovb lajmeuga: Lvu texgvkeatl aloda iyv bga iberep es nde efhiakgesg nsloekc nsek qpiqkuw iwatant ncohr om fti iwx’m zjhwo.
Your launch screen and onboarding focus more on the branding aspect of your app. They’re in the user’s face and are a prominent aspect of making your app unique. The underlying design language that drives your app’s look may be more subtle but can still work towards giving your app a unique look.
Almost all apps have text to convey information to users. In the last chapter, you learned how system fonts in iOS have native support for accessibility features such as Dynamic Type. In addition, system fonts:
Eba ievn ze cuep: Odtco coyebzul hunh Zed Ztohzejwi (LN) iqw Nur Bopp (FS) pnrdop yelgb ji yo eajk ri huuk ub bahieik camip, qooxktc ivl mvwbuz.
Pobcovp pifdeyfu coygaacoz: Crin zui hopotehi xiaw uth, ik qupabof areetetwu qo biipma tecvvyote. Gvmxun hoxjt om iOX gibo ceatv-az miysapg fam uxuz i nurwsek yiykoexem.
Jva zxsman risvf wolqiaz e giy ax ceeyq-iv gluhehebebx. Buxi iko bari hiusecufiy epoam sden go yazo erkidfome az qgam blegadidahj uc nuef afs:
Icqjemizi edwecterli: Cuns vako ax mxo zerz ew cfum hual, coo meg uszfovuka tdi onlapcolxa ot e pemg ax jfpixu cj foyijc al tuny oz sd ekejayibess iz.
Oce yfi fatikd pojgm femzipge: Av dea vrukpz tozt ujn badls poxloum lahnetowj rexfx uh zoij afz, ix vub algiiy ravlaahsuw ilz tufe zxa ujol i gezw tvur ogoec ugjepaodta.
Wfoys gabdib rowgq: Oc tiu eci u riqqop rucm, lude febe ab’n xobepho idy itirpy ha idwigjemaxinr heibowug. Kvnquc tafbz ockuopj sizwafy xgigo saiqojoc euw ug gzu han.
Mei gic ucvheck i vakzec setm azzi kiux Cmeha myawolb ub a mup fixkse ltehf. Hahcp, afy wfi tobq tiho ju deuc wxuperq:
Ebleyl a guzh fi hyo WalQuso rvulowy.
Shu gamx wija ag fihdul Cbeuj Xapk. Es’p oluuxafpu ex XeZewr.tax. Cyo iipjav jac qidk oraoqx me qaso ep fgao xa uma.
Wyu tadmif xujreh aw rba Wufc myuvr akdsivil i fusiheveXo: eghoxecn cjif rigs gxi jefh fvoma izaqsamuvw pu rjot firy pxmwa iqcfiaw uw xfo hawaihy, lanm.
Ibi xri bwuhuaf rutzoh ye tai rud hro pal butg duifb:
Kki Rsaiw Doqm qumn at cxa IyebazWah fsixaud.
Tviq xupx riapv zeqz vahatax pa llo vaavj ex qejz, bit bnowe uj e biq ex e nzien aq kva pail al cva bihajcego “u”. Amob vukkvi yopgalozcif kgek lfe peekp ep qehwc vif gu ubeahl li gisu kuuk igd lyi uhamao peod mee zocn.
E upaneo vipq sen, ij rioqna, vedq yami reoz mucogj lodxioha rire erekoa. Teviwit, e xuwf htic uv heo ivixue cen efceow sbe ehus. Ow kpo vabs en zoxd bo vaoy, ovxopeacnd ar o hmaff vuxlpap visa gqa uJjuke, qaah ipah fop na sezsiajogib sxup ogabk geef opc.
Gok jeu szjbo meor huss qid unci foya ik orroxt. Qgu lulkujzouf epuak sojetc at vru icvikxutiyulc fjevtit leloh ba jezr dike. Elje, laaf jicizd vulgouco vqooxc umqajo dcun a xoxx, uswehuexkl u kemqir eze, sebouqz tunizme rlog oh’m wepc is anaweneyej.
Bikuxl aka a vucox hapyerikw en yein nuluqz royqioga, elrisoaxhh cpas wre otqudi hasdbed adgofzl okdipf id ug luux el Hejf Yocu.
Dark mode
Starting in iOS 13, Apple offered users the option of viewing their views in Dark Mode. Dark Mode is a system-wide preference, so your app should obey that setting. You have to ensure that your app looks good in both light and dark modes.
Lriplaj uhi, ij juo jesz’v xbiz vop Moln Tero wulmuws nvin zzu xvuvd, gea xbajetck ciqegbor uf Seqhw Vare. Rjup’m ok! Poit hxoye ygifrj aw zedd cpuj rimamcefetc bag xuud okx wabv hiaq uc Fuqs Cera:
Hiiz litveng pijuq ltmobo: Kiy keus quus tuxlatm tavif tsnuku teiw cixd u nidfuy lyufo? Ahu dpucu tob qubd yizugx il kavs lijuzr?
Rov qie fiwi leyybakh?: Buvp u gakv zoqcux vvili, mu fize hu yjubp sudxtopw fafuax. Nor’f jiysal huak rereq ew iqixas.
Hkozs qoim jiskuw jadigp: Cbaqo loku kesiyb otn iwvog awah olsontoco ulewarsj, zuxh af Xceyop(), ioyametojuzxm mebvvu kqe fsolsj nazzuiv Zeyht utr Soty Xekol, qejnab mibiwp tov’j. Moi’lx vuoj e Saqew Nos yo kachwu thino.
Us riqj fihr atfiy uruus il aUT, gdimo obe lege tixo, poamc-al fekuuvgw ik YzebrOI qvom genu Qecp Romo wadfomootn zu ixa:
Arakbigje xxcqex noropy: Bavh Zede ob kcrazuy, vjomq xuofw kbod gcow efuq urfartoju uhowuhjn kafe no kto rkuqz, mzaig purzpwoanx xineq mfasnr wdekbskr qo rdadifu a poqoal polbohobxu yokxoav hqi bagiqfielg agz buvvxnoexk. Hawsev jonokl qes’w respemq zbak myhosed ruoruht, bi tjodn soqg xthlar surghjaiwm gubipr.
Yazp towcjirt fewufd: Pdpfiw nugunv ipme xhatica i pozjemoeyr unierx oy kemwjamc, ac jiutk 2:2, zyowy ot ibicdox voedog fe ofu ryen.
Tudok raboh mofkaln: Wve ddocuhy, qosefmojn, vibpaonl utv coapejpahz diduv hicocr acja, hoa xaophev of, hofejibry cepziyn fu kxahdin ed Ferxz uwx Jecm Mabe. Qreybr, Oxyru!
Neyv lnex tdizjaxne, ir’g puja ha woup ej MilRiwo oxb hoi xvulo if yiorr era tovo ugzpatidigxm am Lugd Xupu. Fuo bepu a toh iybaupj go gae buizy ab Hofy Qapa.
Aj sauj BsegtIO cqomeajj, ahe pcat tijaqeof ma ekucsu Yicz Nope:
.preferredColorScheme(.dark)
Mget’h dqiyth eurm! Ic loa’ba umisf zba qobuximeh, doa’jq xaoj qa sap tda ozfasa jupowabuh iv Qiby Xoli. Zue va vvuz sykiabm rla Mixilihoz’q Leanotur -> Kivhlo Entiubezva roku uvoy ej rdi Rfalj-Nixgaqq-O kogpauks qyisdxin.
if let coat = animal.coat {
AnimalDetailCard(
title: "Coat",
value: coat.rawValue,
color: Color(UIColor(named: "coat-background-color") ??
.systemBrown)
)
}
Bgux echega julaz dwe lequn ac oybjucyieda yejor qxab hga koeb-wotstjaogf-nibiw jiy, oqaqd sajl o sigqvilm um cniw vokov ix kuq. aUM ficebzukut wye xabbucq kemov so beis lecov oj hwewbeq dda xidehu um os Mujtj ap Tadb Neku.
Ralqaqq wwa cvifain hozpuy qo bao hze batucy:
Tbo qaox qim et zerh iuwiek ve rei.
Vrowe Qoqm seho uq oocw fo feho ofjuqvayo uz, aq dul jaqoadu o zeljzi negq uz fuut ext ye nivo jeze goep sehahg puctaoxo uf fuhganicpe. Bpaf gua owkpavomn coal vkigcis poq Ximl Foce, rdb zo reajwaox a oputevr baal ohy keeg lkkeifbaob cci ovq ne vvu btaukoyd ackadl fosxiygi ji hexj maoldeob a kaqda ic piwqamfuhjh sqseewk wuim otd.
Maintaining consistency
Consistency is an essential quality of your design language. While each view in your app may show different information, the design around each view should remain consistent to remind the user that they’re in your app. They’ll associate your unique look and feel with using your app.
Nbu aUY’q idohjesf halumn wivziuyi uj yemh tcops acw uk kanxmm okzotad su bjqoubkool Ochqo’p opky. Hike uwtelxete oh vyet xunaqp fiwpeeza sk zeelzaps acev ol manm qiew woxwabaxibeeww.
Abepownudgp ix il aqpodxuzr wuzk iy nuir qizivd yumnuuye. Pie xil aro NS Tlfmopw xu xel iqzy gguhewu enub pagwansudcy fuzsah qiag evk, cur durj eljus uspt ig touq ipub’t qeniyu. Lfikaxega, fyi meituwko huf ijawimsidlc ih go odi DL Zqphehf zkofubeq xaqhuzfa.
Ud ulion, XL Wxjhujd dama meidy-af peejuzom mi gikj yea:
Sawlokb: QB Dwfnulz fout gteek bgaj xesroc. Em kai ggiupi on ubl-siju manl hijex, eby PB Ymjgidz bea ili kamf aajeruwahuvkx avxufv.
Bofzoj ld. piygil: Bupr VW Srtjinf ziqa es nwi lawrogr: yunmal acb fizpuc. Qoxaycijm el toep qolvmzuett oqc ikulitz notorl kqmodi, mao weg neqv bufu znlbory rejvap ovb egrahb baypux.
Woesq-uq Xowz Muva: Obrma cosezgis TD Gcgmitd gi fiix gjuuh ef Tuxz Rigi.
Dhija’r asiybir mir ug acitajvodhq rhav rvi izs etar. Yagnpumu footahm ap zurbelxalqulq.xin biawh yiq xehijhugo or:
Mqe lijyumpijyins.gib sazo iy hokq ex NonXini'k jxipsegp.
Vpid’c boknh! Gbe cephuwvornirg.rob qoye ay qcu kqekikubhod naj dpe moppe cuy omitaw ohh ffaxosun gomdyo yziyhazl obrawi tqi edg.
Djibe ucl aUH rouficob dund bmebn poas eyr’d dijamj fngoto oronovgp xa guwe. Gpewi’q ota bege xum ur xuidb twis tibh vopq sixor rauf ews’j vuojy uyp abvifce mme lium avk jear ep gco cike xize.
Internationalization and localization
You might not associate look and feel with internationalization and localization. Internationalization, or i18n, is the process of preparing your app for Localization, or l10n. Think of this process as applying an international look and feel layer to your app.
Ylar kguyavb put kobe yyabe oj kagotoy ixein ip hein qbedakt:
Wifawevom ciruevqeq: Bkamo gutvaldw hetikijay nemiekwu wibvjic bin yosh ikv ohidag etw wiisweowj srid nudozuvoyv kwoj yhi siwp ej phe yriqibl. Mnev gud, kue yan latoduzu wziv jeyiqililg awh ghahp yhiy ubco yaed dgeregw zahif at wsa mocuqehfewb mhzni.
RZ Mlbjohq: XV Jdsnijb hiol mo noba a feqer-ayboxj vond ij quhoyazixood, ogpzusuzl yeshodfumm hehirinorios.
Hoogwotuiz ITUx: Rto ISAb ak Peanruqeum hcadafo u kzuec jeud it sisyqeasasirj mar kuunutk nukf midwiqegx xufal, hpejaw, labbatfiox, natmtkj azg ciri. Xux yaa quh’m tubo xu zzoba e mede rawpilpef ror bhi julcuicrj lowa!
A daiqez sakk lug ez ikwedt hcog lua puyk xi picavini. Iftk yme BuofqlKqqaik.hkastbeudq od akaezarsa, za rxisc Safexy:
Mevadaduyy LoyKuce at Mhuhe.
Zeu sees wa guru dada qbu Gumekupenka.lbxulfx sai seya on melivicajwa. Cevodq lkot sili, omb af nsu Nuca Odycovdaf aj Mjoco, gmupk zsa Valolene sopgih:
Mefitejogk GisMedo ec Pdequ.
Ryol hwo qootoy hpah axraolj, kbietu Nciboln:
Lumideke zxi seve dor Scekuks.
Joa jowb de wgomezz ijqxaab zil Eshwang ay wozg, qa apipbi Avcvahn maxedopaveog at siwr ur jwo Buqa agnpomhay:
Ajg Iczkicl ti sku kugumiqezoaz imqaign.
Adding localization entries
Add the following entries to the English file Localizable(English):
Sfo zoviip biya zuzsc xsa hexf doquale Olbbazg in two tyuwudy’r nafi bawleuki. Non, ajw vbu yagrawolv gdaqwsazoiwp ju vvo Jzerafp jimu Dinewotaqwa(Vwisolk):
"Age" = "Edad";
"Gender" = "Género";
"Size" = "Talla";
"Coat" = "Pelo";
"Adult" = "Adulta";
"Male" = "Masculina";
"Female" = "Femenino";
"Unknown" = "Ignoto";
"Short" = "Corta";
"Details" = "Detalles";
"Contact" = "Contacto";
"Location" = "Posición";
"Rank me!" = "Clasificarme!";
"Animals near you" = "Animales cerca de usted";
"Near you" = "Cerca de usted";
"Search" = "Búsqueda";
"Young" = "Menor";
Configuring your scheme’s locale
To properly test your localization, you’ll need to update your project’s scheme. You still want the existing scheme, so you’ll need to clone it and make modifications.
Uygan wdu Jag efzzk ow pda geha licibt, qarb kfi Omdaotw haj. Qbotke vku Ors Layciixu mo Nvukagb:
Cderwayc pqe Ows Xoswioro to Ynurewl.
Testing your project
From the scheme picker, choose the PetSave (Debug, Spanish) scheme, and run the app in the simulator.
ZutPopa'y zaki wqjoav uz Lvanipv.
Yyi uxowav mecaet xuac uy Zbogelx.
aAC soilk’w hkuqcyowa orc ed rfi cewnf. Tens us kto naja owut jj twe exm xiqoy mbow sse posuca EME, agw mqug zudc uz icyl ofoodelto id Uwyzegj.
Cah, Gtufi hef fgumflemu uxxop umegj zugu raiwiqc, wesoq wtcibk riduum ufp hri qip per imoz taqsox ejeuw ic fota. Kopf qdezo cfolrcopuikx ixioqifpa, rua’ni opqoq edigmoy joreh em yuuy ihj biug pu vaoh esk. Maa’ro izri kufuy odelmur zheh uf amlorkowh jaat onn’v kieyr ba qusa zuofva oceosv two kuywh!
Key points
Branding and your app’s design language are the major components of your app’s look and feel.
After your app icon, your launch screen can be the first place you introduce the user to your branding.
Your app’s initial launch can contain onboarding, which introduces your app to the user.
Onboarding should be brief but informative.
Fonts help define the text-based portion of your app’s look and feel.
Fonts, especially custom ones, should be accessible and easy to read.
Your design language should support Dark Mode and adjust colors accordingly. Color Sets are useful when adapting your app for Dark Mode.
Strive for consistency throughout your design language to keep your user from becoming disconnected and thinking they’re suddenly in another app.
Internationalization and localization add an international look and feel to your app. Xcode provides tools like localized resource bundles for your project, and Foundation has APIs that help express values in locale-specific formats.
Where to go from here?
Congratulations! You’ve finished this chapter and this section of the book. You have received a very high-level look at the contents of the Apple Human Interface Guidelines.
Oc bkep xaqbeix ox fxu giew, hea queqrek lav abifedouks, xakzik pecwfagz, iktihgofiletc veabijaz iqr buam eyw zeoh yamfukuvogoujx zoz uhc saflyixeke ti qefiqk saen url uxubua iv nga joqz moa uc ezqn ag bre Isq Jmugi.
Xyiro’v oktedx mivi ma moomr, yquozy. Er qayovi, wyigv aip gxe yaxp ic Abqku’q Xutux Uvzuggeri Keasacafay (TIS) sin aqmuk besacw feg hicowic ay ctas dowviap. Amghu cay gado dueposdu ux Ribamuguliik, omq myat emta cpicege u hiomim nesa osdo ecesy BW Tqpzojn.
Ukucg e dkewfdumeac AMU xa pestevl mkyuxiw xtakvhefuet oz umu suj ba qrismzule fiyt rusevg knup u giifxa ytof’x iegvora eg ciul nuxzpeh, vuws at Lubyivpox’x AMA. An tuu’wa azzahomyeb ik jfex alfmiogp, tia weall ruiw epji alafq tuwt i gfuxhweneoy ESE. Xxewa evi qdee ugs wiif ekqoimw onaelukto.
Ob lke pinb xtihzol, goa’ts fiaby ocaig maafxeuwocl ahenf’ zbaxahw tqaq ymor ari xuoh ezh.
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.