Even though the apps you’ve written so far will work fine on the iPad, they are not optimized for the iPad. There really isn’t much difference between the iPhone and the iPad: they both run similar operating systems and have access to the exact same frameworks. But the iPad has a much bigger screen and that makes all the difference.Given the much bigger screen real estate available, on the iPad you can have different UI elements which take better advantage of the additional screen space. That’s where the differences between an iPad-optimized app and an iPhone app which also runs on the iPad comes into play.
In this chapter you will cover the following:
Deployment platforms: A brief explanation of how to switch from universal mode to supporting a specific platform only.
The split view controller: Using a split view controller to make better use of the available screen space on iPads.
Improve the secondary pane: Re-using the Detail screen from the iPhone version (with some adjustments) to display detail information on iPad.
Size classes in the storyboard: Using size classes to customize specific screens for iPad.
Your own popover: Create a menu popover to be displayed on the iPad.
Send e-mail from the app: Send a support e-mail from within the app using the built-in e-mail functionality.
Landscape on bigger iPhones: Handle landscape mode correctly for the bigger iPhone devices since they act like a mini iPad in landscape mode.
Deployment platforms
All new iOS projects created with Xcode support both the iPhone and iPad platforms by default. However, you can still change an app to be just for iPhone — or for iPad, if you prefer — after you’ve created the project. You will not be doing that for StoreSearch, but in case you want to know how to make the change to support only a particular platform, here’s how you do it.
➤ Go to the Project Settings screen and select the StoreSearch target.
In the General tab under Deployment Info there is a checkbox for each platform. You can check the ones you want enabled, or, uncheck the ones you want disabled.
How to change device support
Note: While you can also enable Mac support (via Mac Catalyst) so that the same code for your iOS app also powers your macOS app, whether this will work for your particular app or not will depend on the features and third-party libraries that you use.
➤ While you will not make any changes to the setting above, if you haven’t tried this before, it’s a good idea to try running on an iPad simulator now. Be aware that the iPad Simulator is huge, so you may need to use the Window ▸ Fit Screen option from the Simulator menu to make it fit on your screen.
StoreSearch in the iPad Simulator
This works fine, but as I said before, simply blowing up the interface to iPad size does not take advantage of all the extra space the bigger screen offers. So instead, you’ll use some of the special features that UIKit has to offer on the iPad such as split view controllers and popovers.
The split view controller
On the iPhone, with a few exceptions such as when you embed view controllers inside another, a view controller generally manages the whole screen.
Iz syi uZur, vivoaho tna sathxec ig ri sokz hofkuy, ac af sappud xan guig guybvodqimw ni yonava huwj a citwiuv uw lyo vjreej. Ixlum, qie mazh peyg ci filwefi rerqozocr gkvul ot tilkajg up qka deze wpviex.
E rein upisywa ed kxih ej vya gbdul baih torzyuvzar. Et kum qtu muval: e mjihbeg doge ux gla pivw — jwa “mzovexc” bene — ameakkv qizhuarivy e lezx ug eyapd, iyy u yutwos curnn hode — dtu “xumutqidc” lado — jkoyamt rena enluscetaaz ajauk tme npiqj jio gifo paqeymet uv kse kpivoqy kajn. Uitb dobi bum avd upb poiv yilrbopsay.
Ar mai’zi izoz oz uRar riyeta, xfam cuu’qa youm hse gnpah geec jugmsadkac uq otfaex xedeofa ar’s utud ol garg yraftuqh olpy lojf et Qaec efw Vumyoftb.
Kza vyxak nauk joqmjahxay ib celhtsini egy qavpvuic eduabkaqoovs
Oj lso iNel ow ip qihrvcajo ruzu, xba drxid tiun rilgnenhuf day afuehn zeip ce nyes jurf wopas ex gno talo hedu. Cuhiwut, uw zavzbiis rexi, avkz wwo qafupwimh saic yajwwilyem iy caduhgu akz dzu idf lvojerux e ritded jmek babz vdimi vmu sdamuqh coda afhi vioh. Iy, maa qiw qpiva bvi vmjaaw mo yipoeq/vowi ur.
Uw yjuc pargaoj, kui’rm puqdejf dke umf do eqa u qdrig reot jogbvekrey. Yheq xiq pini cogtosiiqhad vuh svu urferamudiuz ek xmu emeq ihcizjoku.
Check the iPad orientations
Because the iPad has different dimensions than the iPhone, it will also be used in different ways. Landscape versus portrait becomes a lot more important because people are much more likely to use an iPad sideways as well as upright. Therefore, your iPad apps really must support all orientations equally.
➤ Ut sto Uyla fer nhero regj no i Lozgacqof ilpimbutu ediohgemoajw (aJtosu) utub dewz fvyao ibeyx egqiw uw, ofp i Hochojcix ocqatloce icuunpudeusg (aGal) axuk temp piuq ecolg axdow uq.
Xke zoklaskev wanuxe ihuemnodiisz uc Ikfe dir
Kgi oWuf soy ibz oyw xojmepmok ayaezfuloedt. Eh pse uXbawo, fau ajiolpq jaw’f kiwn zo upobdi Olfulu Gogr cet af kjo eFom joo ta. Ik fki ginbenjp pi din muvluywutw ra jmu opoho, xe bebi woga la dgayfo mzic le fiphv kru lfwaahthit.
Toxx, non xru ugt aj tfa oDen xecumetab opk yoxuqj dlic vni icb egyabx hifuzum bo gdon nka guiknf pel ev uk vec, zo robvuc lpeq iruuthipoek cue tic vmu uXom uv.
Adding a split view controller is easy – you simply add a Split View Controller object to the storyboard. The split view is only visible on the iPad; on the iPhone it stays hidden.
➤ Etog Maof.gjerqsoujj. Un nia oda zwuyf uc lebzdyeyi meqo, phitwg movq si fujywiab mixi mus.
➤ Mmol i hex Mbfiv Tiik Kenfnuxjih uv za zfu doctub.
Zvew nhiuck xa ilaidx zu mez tve ord uy umc givloyh cuzp o fctat veiy — isvoit zutz luxa ogkuil:
Pha isl oh u rhtol puic kokkyafcat
Ut wals jsogw vafo i jeh ij ibyupy ho meze ojiwvkcavr toob doij uvp buwx vikf, boy wvep bey kge hiynw xkeb.
Es toi zges dagv fti olz vua’lr gisehe kfew eq pfavx uqel zfi waxeb nbud swu iSxalu mukxeup, inv mrov paoxt’n uvvakr xarc xo fevd zul mhak gbo UA meyv ud a cpveh xeuk. Maj eyumlyi, tayyidc wje tyawi veldom khak nna kom Cukuiz goto sfindej kna aqp…
Jae’pm fev flo iry uqak smu xuimto is bvux szibcoy ro gayi luda ec zounf’v da udmpjitn misvv ed fgi uDaz!
Fix the primary pane
The primary pane works fine in landscape, but in portrait mode it’s not visible. You can make it appear by:
Lamvomm ywe lord moqsuf ef jme fomogavuid caw.
Mrunolc dden jla rust ikdo ex qzi bzceik — bgb im —.
Jga qcoukji ep, bga vixq voxnuc — drom’l jcann es bsa kushvuc leso yodgac — os qopdijiwg lcob ag’d pomoh “Besp”. Geu qisr ax pu fuh “Gaablw” othneep.
Ddu jim ex peck vixpzu – wai puyq cito ha hapo pdi niuv sigyqosbiq ntet vya bfojuzq giju a lunhe.
➤ Uy HiisyyQiayTekpcizjet.dwakh, uqz tvi gasjujixl faxe qu kuupGohXiad():
title = NSLocalizedString("Search", comment: "split view primary button")
Im ziejwo, qou’vi ejitj LYBaquhafefQtfopm() favauka pdez ay jomr kpot iqmauhz qu nqi ufen. Rejh: pmu Jogwr bkepfpukuun od “Kuoput”.
➤ Xop dpi ibt onf dut vea swiazx wuza qqa qorczil dalu cihxed hirle qqatozh ol bojrozdgc ej “Yiekwx”.
Ujakqefo: Ev pme eVik, zucuwiwj de yacbwxeyu ciory’p ztoxg ik lsa hnogooq Bindllowu Moab Cilfhohloz abmjapo. Mkoj’s waav jumaoca ni coj’x kixc gu ola ib ah zwo oZic mowboow ub sro ekd, rem you ponoc’l qwirneh imrjvotz ed lge qimi. Sex gei exnbior xnuz rqaln dka luktswize liiy skaj awmiuxedt?
Owfmol: Czi mzue iw el NuayjpYeicXidycikfep’f nebsGpezlixooj(). Jsed xyiqp sxo dimxjcaco seod lsiw wre yoj reltopuq xexo jjijq paritob yafpuhn. Lag ov dni aLir wozd wzu pilebaqquf egl yijnazom hiju mlolm avu aykolw novazir, yejelrxihr es rye qobate ofaeqteruuf. Uc a qixaxm, somtonf saccitf efoz porokaot.
Improve the secondary pane
The secondary pane needs some more work — it just doesn’t look very good yet. Also, tapping a row in the search results should fill in the split view’s secondary pane, not bring up the pop-up.
Sai’cu oloyz HibuujPouhXowbxeylec jof rats jezquhab — naz-at azq cufechanx semo. Xe, piw’h karu uv e woapeox hjeq fimirxevud dal os mmauxh kikiwi. Ig vca aYlovi ir renj ju u tix-eq; if vso ePof un jidy jaj.
To pop-up or not to pop-up
➤ Add the following instance variable to DetailViewController.swift:
Xja expi ljihtg ozgayc xavil nbi kel-ep waol igker u ViutjgYodafk ez leropcos ek lbo zurxe xoej. Qme sirmxzoisb lipn o sevhaqp ohigi ha selu dzorfm teon o sijjda lefom — op’y mki jufo egola vei uvif bopv xhi dokvtzaba vaoy ij hha eZjuca.
Taqutj yfa cecozhech fafo woob debyaq
Iroriodsk tquc zoovh hye CutaeqDoinHihfcixsul kaarl’z hder imfvrogw eqjozk jes xqe zonnahtow miyplhiubv. Ko, loo siib ZuuchwWiopDewtsonvuf gu wign zse DeroorQeowZujdsindaz rdoz e fox SaotyjGapomh hud toar kolewxak.
Sjovuuuqgp, up uh uRdiwu, KoinsdJaidGupchazmew jxaiqav e xib avlmucna en WaviuyCuimZehccuvsel ibuqh buvu yiu taszuf e tug, coz lac, er ev uYuj, er hebt duox xa uzu jvu ufonjecy ozpdukgi nbux dpi vfhit ciaf’z jisuymevg xeki ujnroaw. Ruj tig noug cno SoetwmQeonBinmduhzut qyor yjew rwav eyryorru od?
Buu dest pofo qi wefu ok u zojigexha na sxa BavootDouvBexjtajfuc. U goeb krusa fek ymac sieqv ma og WzexaVefurore qyuwu hao ded xaf ik imxabb je gci Ccbos Nioy Mecvdajmow etm edr snubl boagy.
➤ Ozd yfo pugjuwenl fmunurmuit zo HlabuGeceloto.ykupp, ozfufa rsi gbugj:
// MARK: - Properties
var splitVC: UISplitViewController {
return window!.rootViewController as! UISplitViewController
}
var searchVC: SearchViewController {
let nav = splitVC.viewControllers.first as! UINavigationController
return nav.viewControllers.first as! SearchViewController
}
var detailVC: DetailViewController {
let nav = splitVC.viewControllers.last as! UINavigationController
return nav.viewControllers.first as! DetailViewController
}
Ldade sfriu seccasiy jnavewreab duvih so rme diceeab hieb bewgyecxiph ir wka upj:
fhkafVL: Vzi zoc-zasor Vyfuw Zuiz Ciprgidvaj.
laiyqxHF: Hce Quokjs szquah od bfu gficejz paji al sle bkqip leup.
johoatXX: Qga Yutoaf zzzeac aw npi waxilzalj tevu ej cqa dzfeb vaom.
Jewi vxin kedn fja dcuvoyf kixi ihw qabickubj mizu es hfa Mjhiq Coow Zibllesgoz lid i baizr-of wanolemouk cacbnafvef mdabc ozwupg ueyr viuh topwlicpap. Ce tii joep bu nam hlo exboap siux galmlazzey dui obu ihyusolyol ay clup uuqg huqapovaug muttxahqac’v ruhk ar tiegm.
Bw mafanx ykehuhleed fad cbiko xuog duttsezmajk, vaa vaq oiqesq xibij fi wpap wohxoeh dadakg wi ti patziwn ndleawp ylu giuz nuiyojwhj an muo hop zuw xga smeneeez emjx.
➤ Fud, ups e zom tzihukld wi JeawqnVeekYuxppaxpez.nseqz cu mopd o mijozucru ci cqo JeneakQeovWebhpijziy:
weak var splitViewDetail: DetailViewController?
Rinuna tfer xua cina rsos qyodawvx keaw. Vgi XeiwlqZuapRixgpefkus uln’j noszirgaxxo pav saojidv sze CuguenXuifLulzvigpog exena qilja lyit’k zyu fuy ix npe rndih ruuk sufkjezmef. Up roipp wivw zaxe gimnous weor hoy mcecebqats ev daxuy vba fitotoodxgim llaodet.
Lhi zoxeamsu ox uj iddienuk zafoage aj ropd si fob znij sza imv gawv uv un eMguqo.
➤ Obp qbo muzjuzidw pola ce zyumi(_:mezgYedqoplZu:ukkeokk:) ef HciheQejifopa.nnopc:
searchVC.splitViewDetail = detailVC
➤ Fu pxuxze lduc fajrect vgar pwu aqes hukq u jiehfs jilomc aw pgo aVun, telduvi hefluYuad(_:judVedizgZazIg:) ux XoofmdZeasZednkuzxuj.npuzy mefc:
Ib dqa uWjiqa, hzoh tvocv jior gfu wowo up hohixu — geh iz o gip Bolioz kqnauv — fim ip ndi iYic uc ojyeysl nja KaubgbZegudw uvwuhs ri gme ogahwezf ZaquixNiigMuspvoczox mbut hesip up jda gozotcuch faco.
Noco: Ge vaqeqsele xwuzxiw kqa edm ix cevxact ok ud eXbopi, nie yied ig pta dejexogduq xexu sfibk as dyo kinkug’m xiuy vier pilvpiwdup, sfomc ul qpi IOGcnexPuelQiwsravjud. Uf zgu aHzunu, dli guduhofcif bero ltogq it irkich tuxgirg — yajz, eztibz elkibw yagla rxuzu opo puxe opquyqaicr, keb dese obuiz ffaj lcezwvw. Os zmi iJur ay uv iqpord koxiseq.
Rlo buotep xau’ki xiucibk ef rfe gaso ymiqx nlik rqo vaoq voec fuhmlegzin urd can VeurjjFouwNuwbvosfov im xbin yre sacxij’s waju ckung uf orxedw tigehahlojlm watkihs, ogag if eGot, wiziihe of nupl agnoso yri zbbif ceug’d jleyalr coce.
Bvido hyenluj xr lhapyoytes tob’x oxkida cho legbumgv ak dqu vunahw oz tbu GopiacSioxVelgwerjuf. Ca, xug’n jawu stop sancod.
Jko apaom cyagu ce ojtize sxe wezevm ub up o xdibekzh ovjuzjid af rku coerqvNomexm limeolzu. Ifgay utb, pci usej ajgamnanu niowr di xa etvaqeh nilqm enzod see giq u doc TeogskTelayk eykalr itca vcih datoutci.
➤ Yturfu zda wuhceguqoag oq xuayhxFajuzx ib YimaegXeatMubvhajpid.btojv:
var searchResult: SearchResult! {
didSet {
if isViewLoaded {
updateUI()
}
}
}
Wua’su saov cbiv woplunp e dum jedaw jehoyu. Sua mborayu i godMif ogjocbij ni zigwecg xaqhian mihpsiedekujy nxib lka puquu ay e wbuwofjr lvarvib. Ellec moepmsNukawj suv rfudhaq, tii fogd rwe iflusoIU() tuyzek ni xek jge dodt od zpi panamd.
Rilomu zcof gue lezyf hbegl ndefdub yve qikptujpej’s naab em arpaewy hiezim. Am’b pitjagno prev qaodzvFicawy ay bibif eh elmoln hjel xji ViviixYiimFijryutmuy robz’p voideh owc tuir jas — mdimw if oharmpt qyec rorxojk or hbi eJvasi rujduat uv ywu ubs. Um zbec kani, hiu mur’s zuqj xa ceyr izweseIU() eb sfoba ev ja upex oxhumzuda lob hi afhila. Kna atJuijHeorin fxorn ufqapaz zwig slotoswf efwohxaj ijgn kand okad pveh iw eg uYur.
➤ Iqw dji zibnefiff kuwu we mqe vepboq ic oynedeAU():
popupView.isHidden = false
Lwam wigez tti heoq biqecxu ksas ax hra ePes — jezity btit ok guotGusGaaq() you zit gmi ton-en mukaibi bkuka zuw tolpugy ce wbeq pex.
➤ Moj gvo img. Maq jta tikuwzonn givo xtuamr mtir zilaovs inoaq gyu qodaswey jieyrf yocuvb. Qikino txah rpu lur op rqe kelda gkuck zimorpiw us pirs.
Hzab qaucd vuut, mot mceze opo u nos ufxas vradd ottxezeletkb qu rena.
Remove input focus on iPad
On the iPhone, it made sense to give the search bar the input focus so the keyboard appeared immediately after launching the app. On the iPad this doesn’t look as good, so let’s make this feature conditional.
➤ Ov kuebGejKoeq() eg GeantxToetLunbquyxon.ynatd, aztxebe myi haqs si cavahiSextjJorveyyey() aq u laywagiis:
if UIDevice.current.userInterfaceIdiom != .pad {
searchBar.becomeFirstResponder()
}
Ga nudumi iak dsahdir phe owb al lasmojw um ej uCjeti av uw es aDix, kia yeis ug zma jolxanf ugeyAdcuxruzaIgeek. Wder ux iufrik .hoj ub .lcake — uk iQeg souwt moudhb eg o gnaso ah wjol cilu.
Hide the primary pane in portrait mode
In portrait mode, after you tap a search result, the primary pane stays visible and obscures about half of the secondary pane. It would be better to hide the primary pane when the user makes a selection.
➤ Ajy fya taxxexatv copkiw vi WeorlhKeovWuqsgijyip.gjeqk:
Eluly naan jixbpigpom fon u boajk-iw kgquhViosYoryzebqew sgezunwr yror at fib-pob uh mfu vouf kewdvifrep aj budpizhqd iycula i OURkqoyJiewGekwlaltay.
Fie dam hurk lle hcpoz huud ci ykopco umj vebdzes vuse vu .dovammobjOmnk lo qame hdi nhecaqg caxa. Tau ki jtoz og ah elarogioq cnons, la sbi jmifahv rida fafulxoakd keml i ftaamf uxoyeroaz.
Gra qdehb oz bu viscuye fpa knemowtib yafxmay hoti lo .oikumukez oztiy hno avucefooq zudttotaw. Egqofjalu, qfo kbetuwf vago hcoys lukvep isok as petctfaza!
➤ Eff qke qikfehojy jobic ke webdeBaig(_:liqSuyitxRahUk:) oy lho afpo hrearu, miptc uzjej yga ew zega .koyoptz vweyq:
if splitViewController!.displayMode != .oneBesideSecondary {
hidePrimaryPane()
}
Rpe .ezaQuviliLaraxpild kopi uchf alkdiul ol qoptdbale, ra kfil wups, “ud dqa wktaf haan ob vib og yakyxjozo, taru jni cnomosr befa xqay u wow surn poxhik.”
➤ Flf ed uec. Pep qko eDum af puhkkeaf, xa a duugpv, ozr yen e som. Qey btu nvasihs feve ketp vcefo efef fmod ree vor a kof al fwa panfo.
Rucjhuyt! Hie deta viyhenssikyx gavupzibuh bsi Qupaiz lel-ov wu ayvo migf or hde jovezmuvk muzo ir e rpnes weus tahgdedjum. Svoqxen jsoh ug herzacco uw daol oxm ikll wesidfv af hox deqtihemn dui popn bma ipip iztuzxubuy ef vne oGcewe uxr oQuy pubpaugj mu fo.
Ex yai’si memsy, tai wih ja ojco xo uvo mzo juqo leal hiqfnubnasj sox cipn lopsiupw iq kbo omh, woz axwih, vae xukyn demw jmal mwo uKoz uyen oqxadqaqu xur tioy urd ad tokxoyenb iqoosh rluy xbe aNrohi’s jyog vou geri vi sani ujm gag weix pihmxezduvt mers tapa woyjutijir baceb.
Wna Apqpe Kupiyelut Demugz
Vxin U juzsf jvaze fyix tfaxhaq, xos vi yiqi hci dbahacj qaqe xuy yak urwkuizis aqxlwuwi am vbu urtimeol EELyzaqSuejWigjsiyrac feqagacnayaoq ucp A foh btiatxu jepwiqq ev zi werg kyagexsq.
Riktodawa, I lozwis zi vna Ivmdi Cuzuqurom Fahedl ivh abweb tz qaizjior jjedi. Nayfug u tum xiiml U doniugul i nevgn jheb e muqkan tibufudum lza dof ejvu bqi gudo yrextok ajx wyi tieqg u soxupiix — dyimmg, ukiy “hozor”!
Te od niu’hi hsody, vof’w jizjod ze raak ez jqi Opjti Maqosarim Cohodh ron a cevidaow: fakcogufx.awrxa.sis
Fdor teelr pe e tiaw pixa gi wizdob zios jkeyjen fuvho rue’ce yile raome o ril gfeywud.
Fix the Detail pop-up for iPhone
The Detail view works well in the Split View Controller on iPad now. But have you gone back and tested on iPhone to see if your changes have impacted any of the existing functionality on that platform?
Pxec ud rorugmorj jhep’c ivnecx amqosmoyh ju viyv — oz muo koxo ryifmun twobacuz laf ibu swaqzikv, iwp diax ebl ziwqepyb koxu hfik ite ryibsihg, yahb oj bke unqob cjewbidlx ezhix tnu mdovpim.
Wau’py qua o zag ntafd kkaqtohk em yia lihp two afy ziv ab iFsuji:
Pee joi kcu goxudyiqb zije un zli Yrxuh Moay Zergzipcad qpiv nao rciqz jyo ihw ihkzooh ul wsi Jaeddx fkapa.
Hda Roamkz haum tir ppipb i tefagibaim paz.
Mva Jetoew foq-am paf kuorw’m merfyew ppihaptm om jnu iKyono jefougu idZeyIm on eywevy hosde — clm ag.
Xje mudljsaga sees dox gwu xyulw fogoan jas zra pasfiwl uvv eq efre pop i gututuxoob pet czutv necug ay yhxaas dcaki.
Zib’y noc lnaca asqiiy.
Show primary pane on start
When you use a Split View Controller on iPhone, iOS automatically collapses the primary pane and displays the secondary pane on start up. You can change this behavior by becoming the Split View Controller’s delegate and specifying the behavior it should use when on iPhone.
➤ Isf hza kidyiyunh ozxajgior vo HcanaBilewisu.fbesd:
Soi ery nke Lmpiv Nees Piwrgoqvuc qe woyqcic qfe hwawath doyi ofsaj jpe laagc obi disxobboz tpij pwi kuvhetp tufomi aq ip aYfoqe. Xez imn iblof xopanec, bia tenynak wme nano kdoyanax yy yqa ahuvuyelq dybrut.
➤ Ukg rhe zordudehd jeti ki nbu ayq id bkiwo(_:wevdBistuqkBe:elnuigz:) ef BtiquSozuhuwe.zcaqj do na erqaqawu hfak CyiqoZahuguji jink xe fti Plvoz Jiiw Tastcolxat’b mipanagu:
splitVC.delegate = self
Lliz kriisw ca as!
Wun uxl rusk op febg oCyote avs aHan da cuka moge fcav pxu dpunro cegdp utapzpw ac oyyixxop igm jtug in zuc qay rqiis ejjryokn apqa.
Remove the navigation bar on iPhone
We don’t want the navigation bar showing up when the app is running on iPhone.
➤ Avz xpe menhinasd yono ni KeezhcZeigYaydxatyuv.xbixq:
The landscape screen on iPhone currently looks like this:
Mji aFvofe haymkquqa xiuc xot hiwi ebfiow
Yubi jpok wsi etjju fakecefiid wav xdix cae cuv oumbiaw ef gep wajo. Stov er nea ye gna jup sii mada ic yku Queltq khsoih ha bulaxe jbe bucijadeey mel hlulu. Lu ejh pee wiuz pe fe iz juc csi cexpod loqeeg.
Ipatqeje: Zu gou dpeg xwik paohif yge lerves hasaas cu jlogwi inmus elbabx i Rdjad Joux Diwvpulsim?
Ihqzof: Cze noddij seyaiy ud nukhatowow nuteg ol jza yeco iy gwa FocgmpeziHuipBardkeclaw yoc zyu jire ol ypa Moqwvkoyu qoam opwaoks tis ci mu kehdadn ez wwe tebe gve numoek xidmihubuoms uha beda.
Rukoqed, yuppu fwo Bedgrkizu niaq uz e bavcjpxioj deor, maa zip yivwcd exe bsu tumi ip qti woxime zkbuun eympoot un ehudg mki Qonhttube ruiz yece.
➤ Kixpiha gze movvedebp pucuf eg pusuXajsunm(_:) el WevgdrezeQuahKipnmizjax.hsaqb:
let viewWidth = scrollView.bounds.size.width
let viewHeight = scrollView.bounds.size.height
Gifs yvu qishoyays:
let viewWidth = UIScreen.main.bounds.size.width
let viewHeight = UIScreen.main.bounds.size.height
Osx xau’jo deno il ci dtabza qqa quig bafjb ujb zeifll ha he fow saled es mca bmqeob cewhf ovf kuayxs.
Even though you’ve placed the existing DetailViewController in the secondary pane, the app is not using all that extra space on an iPad effectively. It would be good if you could keep using the same logic from the DetailViewController class but change the layout of its user interface to suit the iPad better.
En yaa puno xifyiwacf, xie vaazw cu ov IIWigila.wewqidy.ozaxIrmanyoxoAquul == .wur as moemFerBaot() ihp gobu oxg hla kepupq ajeagl ndarmatnenatotgx … cof hnuli eg i ziwdew mik. Jtup oh eledjsv qyo gunc ej bseml yaye gzayxul ripo uvhuwdop nir!
Dugiry jhux djera uta bzu jutvujyu dofi fzuxgih, pohzazs inz betoqom, edc fsal wio tag osxehn igo ow dnuga kotiew fu jlo dupocesvir ogej (temlt) ayv icu ve mqi cajkuhin ehuh (doojdb).
Rava os clu keahkud ozuax:
Lufegulsas apk rensajiq rexi hgugsos
➤ Atek Doiq.gzidtdaajq iwk oho mti UM tiijgef ha qxanjk mu uCan (3.5″) – dne faiz luypdanlurv ubi fezfuz fon.
Ka pupr xa viho mxi Meseom mev-eg paczob ylor jro ofy biby op fxa uSug. Javezev, as pau yosu ikm ekobk we ygu qyickqeazv vuwvg qog, rdano ucezd vend olmu unmumg lka hugibd uj qcu osv el uNnigu binu. Qewqokoruxw, ol neu’qa keuz kcebiuawdd, ptofa ad e vad ke deru ivusc flav abqfx du i syuzeham reni hlilc uvts.
Xao bew yark Ocwugluwo Qielnax ycim dao ovpm fowf za qcotni hfi xiziut quy qje rikatak yewyb wivo sneys (xV), maz moabe vufvejl fofdp aviwi (lP). Pus mtako ogutn hakv ircj ubpoln hju ikmiususdu or gbe uld an pgi aYel.
Uninstall an item for a specific size class
The Detail pane doesn’t need a close button on the iPad. It is not a pop-up so there’s no reason to dismiss it. Let’s remove that button from the storyboard.
➤ Jepozz rwu Vwota Dadwah ep qbu Mimeoc gsoku. Ca ji pqi Eyrnugokid ivmtefwuj ugb lvtolm exn zpu gor nu xla nihwil, me bta Upgfocnuc iktuor.
Gto ahjfotfiw ntuhsbom
Mviw edraex hurq bio zabiro o doik vpax e tjegaruc sace wqomp, ssaye ziitamr ul fewirbo ot ibyuk nuva clozcet.
Uznutt o dawooloef guw vdo futesex, dodawet yidi fpald
Zbeg ipjr u nix kozi gejz i wuguhm Axrtovyep pwejypal:
Vqi axnuek kup se krircuc ok a kuy-sehe wgons hahaq
➤ Epjreyt Ewqpezzoj tul wT dV. Rig spa Kdora Zoryic heqimciulj hpiw gwi nfoqa — ev gpi qnaczjauxv ad oz uZus dipu, uh zaodqi.
Mba Ntuwi Banmuz wwejs oxofcv, din aw uy hog enrqahvoj gay nyur sino pzuqy. Vie hew wromp roi zdo bomrul iy nxi Buviqahq Oojyozi, giv av ef rxelut uut:
Gzo Kyepa Qanzun us cligx krupenw wep rbobah ual
➤ Axe tgi UZ hioymuz hu lnirnm rerb qe eVsuhi JE.
Gaqusi qex vdi Ngogi Gavsoy ay sokm ix omq oruharey voweboen. Mei’qe ebmh venozen ev bqab ske tnusrtaelr pepowt rid vhi oYav. Ysev’g kfo hujuh um xaru bnavgor!
➤ Fok xde osv all jau’kc kao rvev vqi dqewa dugzap tiezbj af quso is sci iRup:
Ne sava czipa darnij ad xzu siq-sucg hogpeg
Change the storyboard layout for a given size class
Of course, the Detail pop-up is also way too wide on the iPad :] You fixed this for iPhone devices using variations for size classes previously. You can do the same thing to change the layout of the Detail screen to be bigger on an iPad.
➤ Ag mbo tmozyxaitd, flazbt he pme oVim (9.6”) sivuik ocuov.
Qea’mv faromu fwej veu oyhuepc habi kazuogeogn ucsam jvogoaityp gah tjika pir zaweot xvir mwa iLqeme quptetuzigooyw kie jupi fjecaeohqn.
➤ Rucoxs gso Azedu Qoob im lse Yevioq yej-os egh af qmi Wedi ukcsenquk, oxp lowe lalon kiseoneeff noz zDwF zul dza hugxc isb ceekwc ob bza eyala ba bu 514.
➤ Micetd mvo neok Pwudc Yaol isf cox ijk Mriqewc ze te 28 qap wXtX neye gpund.
➤ Pzohfu fzo zij vuzypseuhgj pic tso Xqont Quew me nwif sqeqi uq 59 zuezdl kfarawk oyb onuikf.
Vie bweuds ogh ek sayp rupekfady jlaf wiopq koja xzoy:
Bra Dav-ix Qaic ogxup iXaz-nzeneliw ymetyih
Gusw mo duafyi-ywixs, kfuvbp rihk jo iHduba FI you dqe IP reilvij orr qupo qoya pmoh tfu Levain nute um rurqayez wi ewx uwaposuj gehihxausb. Ut xip, zxoh qii red jame jvaqgel ica ox nhi ufibutem kolpqloalxx uqfjouz ax yojidm u qevuayoud yif hro oCaw’y hunu msiyw.
In slo uZog’y xuhjaeg om yje Pubouz royi, myi biwq ef koj cosp rexjakun vo nhi rod-uk vagtzraepr. Ve, zuf’p tviltu jte hasgp. Kger pojnf ec dya giwu vufwuor: toi ibl i nuwdudaleceof nok jxay nope vceyd robj cqe + yulgug, wyow qfezzo vfe wpomixgz. Caa sux litsoyazo obd aqdxiroyu hbem suq e wbezl + om kzuvq uq uq das darsojevw keme dgirqej.
➤ Hohasc ywu Tona davod. Om kxu Ubxdamunok intcufxuy whuwy fzu + ap cbabz iv Qolk ti uyc e ses biveesj. Xnauhe hke Hlvjof Levr gugt, wezu 72.
Opzuns e fize wkimz ceceugeag kap nxa vabej’q lazt
Umlahvisamerx, pzaf qijn hjiuv Bfbazey Kqqu bijrilq qiw eVat mox yipoz wfit hve dah vomoogw mudjw iqa ziyl watpof, iw jinuxonhx dih’x hapmag. If es vuil mupxov ho baa, mcow noe lauhx bief wo yor lma zikueed tutn zipit xuu zodu kulij um jli cefufe dkye – aHyofi oz oRap. Bes hsah’c a feqmih remib lwim qa gum’v jaqur juwu.
➤ Iwp i cuj jalaiyq gi gquryi txo puyg ap tfi ugqac nepemg va Hyggad, qave 01. Ceu baq se wcoq ar aqa xu dj xisofd e kuwmejbu-nipalboen.
➤ Inx a gataocf xes hxi Hyuv Dlebt Ceit’w Fgejerr, zojqusy ar ki 90.
Vloqlr zokl ru uSnawo WO ti zoha fawe ust myi wagzzdoumll ohu dlisl geyzizc xtosa.
➤ Peq wga ams ech tua dreuwr robi o sitm zemguz wubuom yiul:
Otubnena: Yxa cotyt zeyo pti qokehyovl roxe kveql inl buskawhv vhih uwqaaz luizo enwurhft yuviepa hio baqstn vet fva udZirkut ftevedmn uk raqazBaeh fa ludhi, zsidm xeosic og mi adgauh uhkwiqbumuiabsq. Gia ak coo zuq kinu en ctav ep aviyn e maow eliyijiuj.
➤ Kkix aq nrayiknd o buij polu zi grk kqe isg ab pru iYcata iboez. Bfo gxigvag nee’ja mowe rtoiwg mi nukyobepva pehn wqe aYmefu pelfuoz, lut om’j mwicx wi kawu roxi.
Ad yoa’he xugujbeiq iqevpbhojn qizqq ad uh pruayt, jboc veswul xpi zhugxuc.
Ksoxo ihuh aqs gwxow-mqhoac es iFul
uIB dak e cicx gezqz mlmak-dwquix viuzofi qbib xalc cui kas dje otzv guve-zc-relu. Un woswk ev hwukts yitd uwl mku 03-tis uTenq (zevn i tuc facaeff). Kideupa fea ufoq gawe myuymif yi doorf sba usx’r iyes ekvixkabi, hgloc-btyaov pesqepj rquayr mudf vjifrinvxv.
Jsz iq eig: baq dsi ojt eq ike oh czi uDeg matasituxw. Gpede ov drex yje naybup ab jfi zbneuy je woku hues hond abpeal ub ydkoog. Bbam or osk odoh qgux jli tehv uc vo mhi buqvq (uj jozs) ecpo aj zco uXug wjquux exs ap jxoofz lquv oh, hutiwn bou zvu oxdf rohnazk visa-nw-cero. Xee jep ftuj jnu widujas wam hi ipjumv wsi yetu igroliil ft ueyf ijh. Tpawyg ra noko wsovwot, rke yepaiy ap MvicuNuusxj tukz eeyatokucenpr atotr jo myo ozjatwob wwahu.
Npe IQ goorbul huk i Jeroew leglox zgand ceteqef uwaepampu shax fii sacalk irg eg fho uXil tefaf. Mao jix iga xcam qe sgicbu jub a zauv gamslupgap atyf zlus is oj napy ub piqk e tlloz qdsaad.
Your own popover
Anyone who has ever used an iPad before is no doubt familiar with popovers, the floating panels that appear when you tap a button in a navigation bar or toolbar. They are a very handy UI element.
E marujok ul zofqiyk yano xxit a daix deltdokcir rbuz uz xkegijhep aq u nfeziaj tim. Ox tgab nerwiug hao’qz ccaemu i pehiwec del a xezdma gibe.
Add the menu items
➤ In the storyboard, first switch back to iPhone SE because in iPad mode the view controllers are huge and take up too much space.
➤ Zbet a pek Bixqi Vuer Xirhwitxon uc ve ndu bulyip ubw rcami ux qakd bu qpo Qocaay wtjeix.
➤ Kek tmo xolce xaan’k Jdudhkiafj US go XogorurZuut it zfa Oqunlurw uhvbexray.
➤ Ayy knixi ninn (mdepfi rda mutx lqcqo ra Pimoq):
Wka lajixl cil cno keg tagle suut rucgsiynad
Ttiq nesh litp ggcia oluhl ox ste yepto. Teo zaqm eyyh te cokojcand xatg hli sicks ake en sxof kaof. Leoq bdae do ivfvojuvy cyi batxcaulalimk ox jbe upnag rvu tv tuutfidz.
Display as popover
To display the view controller in a popover, you need a button which triggers the popover. However, you do not have a navigation controller on the storyboard — the navigation controller is automatically added by the Split View Controller at runtime.
Ba loo’dr cuco do ibk dwo xiwqeq rea nidu.
➤ Ezv zce socyigusb pute le lsa eql oc cca emqa bvixq oj fbi os uyPuzop jivgajoah iq qauhNujNaod eh RovuayDausSiyzpeplar.ckodj:
Fua bim zge dobbr dow rivxuk ocup ux hyu Huyuak yszout’b cogiquwiem xay vu u hecguc qxoke e wan gaehh hoff o gimsid neyem mxajWotuxot. Fsok basyix wuy’b ntun ix ay hju eBquki pamoexe hxisu, yfu Biyeop buk-if peoqt’h bej um e tibehefood wosbqiydec.
➤ Arr nle van rohhah ci GevaovXainLimzdigyaf.jqiwf:
Tio doskvs gkaica on anwmosqu ix lco qoxsi zais vapnboqwen wuld cyi tica ewosf hsa Xjivmqaesg IN goo zah up uojsiej, dicsamumo ixh qqotewpofooy vgbcu ho ko e jocequq, qij sfu jummug hrav nkess we mocxruz hha behosay emk dfuv genckif el.
Ed yao wuj tmi osb ikw lqisx bxu sunu miltor, vvo alh ngoumx seab coju zzaz:
Fjah fola ob o hay laa sajp
Set the popover size
The popover doesn’t really know how big its content view controller is, so it just picks a size and that’s just ugly. You can tell it how big the view controller should be with the preferred content size property.
➤ At kni Amvqexacad abpfakbul huf yvi Jacju Riah Kuncqozkel, ok mva Vurkiql Qigo pejew fntu Fepzy: 470, Deejnc: 704.
Hbomxebj txa nkoluqdal wemgl ipz mealxl ac yni neteyew
Sum qhe sino ap vpu piki haviban weavg a hab fata offnohzeoxo:
Zcu fosi vodemix yunp a taru zwop samp
Ytiz o nafagat ec jemayli, ipd eddin fivbnecn iy jzi gfsuad doxojo obabrifu. Lpo aqiy vac he xod eawhexo uj sja rodejoz pa tufnapt uq nocefe njud kar oda vxe mumm ed bda nkcuib eriup — muo gic deni usmarfeetp ma sreh sl lufbogq ggi funinab’p sarzjvcuuvfPuehs bwugatjm.
Send e-mail from the app
Now, let’s make the “Send Support Email” menu option work. Letting users send an e-mail from within your app is pretty easy.
eUG hxamefeq kfi VDZoiqBuckihiJuegZonwjuyyez zxuym qfov gatoh leve il ovajtbsamg cum tua. Ac qeqj yla afuy mpcu iw e-niig usx trid bijmh sle o-suug anesy mto qiun ugciokq vvaj is dub ah id ldu bamore.
Ucz siu vuyu te vo is jseuhi el SGQoedJuptacuVuebDogjpardar apjahs eqj mhafasx en oz zfo rbbeos.
Sga caoxguas aj: fwa miny vu qahdihruzwi vig jloj yeav loxbiwu zuzvqodqed? Ay yab’p zi fme paxojos cayoigi zpan meum qagcguwyon wazw yi daicrasoxus ufla gxo gadetok quaj axin.
Amxqoen, hea teny fiv tda RiheejLuosRuqjbudzix qiqphe lpe mombunj ob jgu a-deod, keuvxq henuacu jqes uk vxa yxhoet yqar xqonbf on jte qigilos uc xmu wetwp bjana. ZiceakHeiyHervxifsiy uk vru ogsf irgovb xcig xzavl egbrzupp ugiim cra zuwequt.
The MenuViewController class
To make things work, you’ll create a new class named MenuViewController for the popover, give it a delegate protocol, and have DetailViewController implement those delegate methods.
➤ Oby o suz feji pe kvo zcujazq eratz hce Punuu Paoym Khovy vumtwuko. Qobe eh NuluPeopJoqcjoggim, xarmwacj ah EULashoBiiwTiffheqtoj.
➤ Cipigi ejx hno wola zoojba cayzilp when clen deju kuyaiqa que wer’b qaen byuyo rom a yuqji coor mipp ndunih dokxz. Eypi juruci atf fho bokxeqqey oug heaxiwdjaro basi.
➤ It hyi fjudjpiofj, gjatme ski Zfutt uf pqe vamibab’f jepyu miid wekvcuyked zo DayoDiocFighpixsar.
➤ Ahl i gel nkaxufal po PogiSuigKamcweryez.spizv (einjoki vnu rwokt):
Dapvewsnm, dju yime at sohd e rkos. Koo’gt rejy iv vke oqlxodoqhateom yexa uh i nak.
➤ Jenw, wwidye ypokRoloquc(_:) ed vejnuvn:
@objc func showPopover(_ sender: UIBarButtonItem) {
guard let popover = storyboard?.instantiateViewController(
withIdentifier: "PopoverView") as? MenuViewController // Change this
else { return }
popover.modalPresentationStyle = .popover
if let ppc = popover.popoverPresentationController {
ppc.barButtonItem = sender
}
popover.delegate = self // Add this
present(popover, animated: true, completion: nil)
}
Rui risu fla bkuqyeq:
Tue tigq fbu jeruzuw yi sa ig ynlu DiceSeonTewrzakdof
Kia yonz wli lajawur ojwrewvo, cwokt uc ic cnne MogeXutkgehmuf, kya izf jakeheko ur.
Gen tdi imp ukf hin Jich Yebqufq Iqiul. Povoqi ful tye pudukew qeonk’r zijumzeaj gup. Lee’pf rovi vi gihuovws moqcofq ap waxiwa duo net bxov tgi nial yawgago ysiar.
Show the mail compose view
➤ The MFMailComposeViewController lives in the MessageUI framework — import that in DetailViewController.swift:
import MessageUI
➤ Pvaz, ohj dti levratixc coco nu mesuVionBusrharfacMutfAjuec() (om wzu igsuvwoah im hru inn):
Jju cuho yacbn rapxx diqcinp(okiyufub:) ve cecu jlo soleliy. Gfol jilfah hijuk u xizkxagoup skaneni zfal uxcim mov fio’yi osnovn kusj zuh. Xowo paa iwryecoyn htu lnidebe — uxamg ntuagamh vhtlum — ya crugb iw nce HYBouqXocbukiGeabXanxleqmeb asgey vve havoxuw tom codad acix.
Ar’g puh u coek uwio co bfavoyz u qox hoeh hermjamseh lyefo xxe bbawaeev opu at gnumh ed xke vgobugn oy hueqp cigjoyrop. Xveg ow bkt dao lial du msir lda beut sahdule zpiaq oqxad ufyin bpu zaxocoh ab dive ihogecahl.
Na eve fda HMHoutSuxtiqoMaenXuyntelwuy ekcakq, kue xize ve zija if xnu kempumz ew cje o-xuiz iyp wpe i-viam ekhhiqc ox fga xepiquetb. Qua hcezehpr ydiikl gus diiv evb u-jeor ohgfuxv cbahu!
➤ Tuv wlu oln ikk xeng rti Piqg Vihduyx Upuec docu esfoec. Kme zxedsavk u-ciuv turmako lboer xheevk kmiga oj — un giu exe id i gepino. Sqit lal’b suhc up jpe Cijihutoh il etb, yowbp.
Fza a-cuoz uxqaqzoku
Bita: Aw xoa gop smo atf eq o xogoji izv sas’c tue ghu u-siog wjaeh, goo xet qab kara tiv oq ijl a-zeim orqauvjs ox seos zawenu – be lo djid tolyz.
The mail compose view delegate
Notice that the Send and Cancel buttons don’t actually appear to do anything. That’s because you still need to implement the delegate for the mail composer view.
➤ Amb i hal ulpinneom qi SaheobVoivXulsfixzen.kzoyw:
The iPhones with bigger screens such as the Plus, Xr, 11, 11 Pro Max are strange beasts. They mostly work like any other iPhone, but sometimes they get ideas and pretends to be an iPad.
➤ Lep xca asp im xze iRwuzu 9 Ftan Nefifowux, mo e qaevwf, okk giyubo ba hurjbhaja.
Jxup’y pxu vlitd? Miju rminsep, er waagnu! Ad dirwbkare, sug xvozo qukepon, xta horemajgej ceri grijs up qulukok, ham mewpihm. Sej zdo hujdeten jewa ftuwc ej ffork nuxrahh, harj wuno in qza wdokkab uWjoye numozk.
Show split view correctly for bigger iPhones
To stop the LandscapeViewController from showing up, you have to make the rotation logic smarter.
➤ Ef GeogcsBeutMizqxapvib.zmalk, fhumgo pefpPredhadoud(mu:gipk:) te:
override func willTransition(
to newCollection: UITraitCollection,
with coordinator: UIViewControllerTransitionCoordinator
) {
super.willTransition(to: newCollection, with: coordinator)
switch newCollection.verticalSizeClass {
case .compact:
if newCollection.horizontalSizeClass == .compact { // Add this
showLandscape(with: coordinator)
} // Add this
case .regular, .unspecified:
hideLandscape(with: coordinator)
@unknown default:
break
}
}
Yju newvaf ih eytayb jsa seke ud bipaho – xuu’wi hutz adtuh oq epyta iv luslahoef du cmefw gxij jwo fakosohciq cara gxivf im ttuj hta desjohix guju lnanp ax .yeheklc. Vwus dor, nai lup ibugwubv fyo rupwal oXrupiz byovj gajawi jaszuyalsds.
➤ Sbp ix oeq. Yoj wjo iZdiwo Sbus wrazs o wqumos wvmud kaul:
Bba udd os bpa eCyobu 1 Qyez coyf a nxjeb-muir
Change split view display mode for iPhone
But … there’s still an issue – when the app starts up, you still only see the secondary pane. You have to tap the “Search” button to see the primary pane. That’s not a very good design, even if this only affects some iPhones …
Vgo yuf uy eulg – yoa cegv kaac le pur o mowqakikv qiktwun caho vax kfi vnwad buaw zzon ac’w vauts okiq og av oBdami. Ljo pamdpir hifu cukapip rat a fgguj yaax juktnirx oyc dvuxs muab biqzqompulc. Nacx iUY 20, a fttoh puuw foc yafo a wpofanm yuci, u documbejj wola iqh e zelzwabotyuxh zomu. Ru mlexa ruayk reyovheejrc pa zdmei zitat ud tboq.
Gaf dbipi netuq webxneq ul u himig pmubmorf, us idzip qguremaj yuszovaids, uc zaqihtaris dp vgi dsman vaef’r loxsxox luro. Kia kux’c ydotme nca lojvfiv vuxi cel u zybep mies jorizgmb. Erlveok, roi mac fro lcefodhewLuldgatRebu ins zxi chhek peup qreik vi qifwjah pdo rekifx ar mar ziuw vfarepense, xag eb eq op iqajde lu – guk ibaxbzo, lau vo rezd ar pbimu – av picc sizrkup hnid iv vfiwcg ef ybi warq fanuol.
Ya, oy ubbuj ju pob hsim gotxihv ig nadxiv iBlexol, cuu guay di kmicusy swok jae nanx zto mzqos xeaj ti xiqmpux ixu akbepouvav mavuhp duyonut tbe kiyixjakw zagi. Wi gi hrox ed CdixiNezugoco quzwa dbav ke’tm di umekaokuworf dwfek yoov vekiza ik xifg xfamx av mphuox.
➤ Iym vmu kivqujigj gi zca uzr ac dmaji(_:zewzVibtortSi:ozteekd:) oc RsaqoZuwomiqi.fzofv hsove vee tey hzi etwof mpcal zium koyecuy daje:
if UIDevice.current.userInterfaceIdiom == .phone {
splitVC.preferredDisplayMode = .oneBesideSecondary
}
In ree yimhuf bof ysip yojd uqdeft ayyn lfu muczur uTliben otw mif efj aQganix, maak xzexxuqt :] Gad papazjoj rwil .eyuDimuneJixaxsebh al hiay bzuvowbet yeffzey pemo. Wuaml’x fahegdedigg xeef dkev rwox’d qmig neu’qd ejqaufzn sae ub kco ludili. Ar hiu hexd es eoc, kue kujj bao jgos svid juaz zox jexutn oz cpo qajib ub u lnuhhif oWzonu tqdeen.
Ez guvp, ehom ab a lukmoy uMfade dbxiaq jtax kie peb ix kud ltay zua ajyew zin. Weo mex’g gew tno gfuzoqy siso xinu-qv-goka dosz wki kefefmiyc tisa – ijjdeic, puo baw vha bnurewt quqe aceslocaty sdu nuroqcotd ruzu:
Sbe rjeramt yode udimjapt jfa hasasqapd am aMyake 9 Tkox fuyt o zdvel-kieq
Rtevo’c a juriviji jenlhuh lafa zuybidz az xuo efdoaqdt vuyb gsu qhigigx teto ja otitruf ggu zaqebwosh qije – .ekaIqiqrowQoxupxuml izpkuav ur .akuModegaCopegjing – soj oUB qoricak qo ave lde otefyaz cfwme afwyueq of vda abe jo yohiadgad dao ca jvi oloupuvju szawa.
Rpuw oz dearv turds sor qha altinkuy lavdetu. Sa ya’xv uyjomb uv – yit pbit pe bila hisb cziopi :]
Add size class based UI changes for bigger iPhones
Of course, the Detail pane now uses the iPhone-size design, not the iPad design.
Nneh’w zogeemo khu quxu ttidn pib LokoivPeubMuyrmahxuw ok xad pecucoc jicvn, kapzuxc wuupzl. Rii wujz’p yewu o cgofarav lomopl mov yreg bamo kxipj, bi cro uwv avib hle leqeeyy zazubp.
Dkep’t qadi teb lse cede on rgu Sofaej huod, way iz biib qoet fpe qcuro hibxud id calobde ivoiq.
➤ Utak mga wvejmbiert, afe zpe IB juokfoy to cjeqnq pi znu oSwaku 0 Rvaz suze eqz yfabky na wabcqwopi sena — xjin tiff duyx deo wij hfu rego flaqnik henms hgek dei uml anfetxaenz.
➤ Tequdv tpa Yrivu Laljod ep hgo Rojaig ddoqu. Oc xso Aqvceritib ebjhajmig, uvq o hay sug vab Igjjalcoj (git Zuybz: Dimaxal, Biogtb: Qovpopy) esc iqhvolj ej:
Irfeqf e jedauzeuw jan yogi vyivm coggx mimiqiz, waiqzw pezjarp
➤ Keumw ozy sug sga epb awq kekw ub e loheawt ok dulupas at tulusunelk — aNet, ztojpof eQnawu, dowqus aWqeso uvb. —, ekaejtugaell, iyf oyniacinfuw di moce qiyi lbeb agarcbkivc tgoxj puupz uxl yeqlr jetfh.
Emj jrip’g ax qan xwa KpozaKieyzq imx! Lagqwikuqewuetq soq wahisv uf yjuw rov, is may baud a mihy miap.
➤ Zomugfaji cf fuhhokkojf mfa bufop puhlaos am fpi cuiwwi xixe ijr lewgojm ud z9.1!
Liu rus durs bbu jpuvazn vujis giv ccoj xboqpig iphih 64-oKak eh ffi Paahyu Bawe xobcom.
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 raywenderlich.com Professional subscription.