Sdílet prostřednictvím


Shrnutí kapitoly 5. Řešení velikostí

Poznámka:

Tato kniha byla publikována na jaře roku 2016 a od té doby nebyla aktualizována. Existuje mnoho v knize, která zůstává cenná, ale některé materiály jsou zastaralé a některá témata už nejsou zcela správná nebo úplná.

Dosud bylo dosaženo několika velikostí Xamarin.Forms :

  • Výška stavového řádku pro iOS je 20
  • Výchozí BoxView šířka a výška 40
  • Výchozí hodnota Padding v hodnotě Frame 20
  • Výchozí hodnota Spacing StackLayout je 6.
  • Metoda Device.GetNamedSize vrátí číselnou velikost písma.

Tyto velikosti nejsou pixely. Místo toho jsou jednotky nezávislé na zařízení rozpoznané nezávisle na každé platformě.

Pixely, body, dps, DIPS a DIU

V rané fázi historie Apple Mac a Microsoft Windows programátoři pracovali v jednotkách pixelů. Nástup vyššího rozlišení ale vyžaduje virtualizovaný a abstraktní přístup ke souřadnicům obrazovky. Na světě Mac programátoři pracovali v jednotkách bodů, tradičně 1/72 palce, zatímco vývojáři Windows používali jednotky nezávislé na zařízeních (DIU) založené na 1/96 palců.

Mobilní zařízení jsou ale obecně mnohem blíže k obličeji a mají vyšší rozlišení než obrazovky plochy, což znamená, že větší hustota pixelů může být tolerována.

Programátoři, kteří cílí na zařízení Apple iPhone a iPad, nadále pracují v jednotkách bodů, ale na 160 z těchto bodů je 160 palců. V závislosti na zařízení může být k bodu 1, 2 nebo 3 pixely.

Android je podobný. Programátoři pracují v jednotkách pixelů nezávislých na hustotě (dps) a vztah mezi dps a pixely je založen na 160 dps na paleci.

Telefony a mobilní zařízení s Windows také navazovaly faktory škálování, které naznačují, že se blíží 160 jednotek nezávislých na zařízeních.

Poznámka:

Xamarin.Forms už nepodporuje žádný telefon nebo mobilní zařízení s Windows.

V souhrnu Xamarin.Forms programátor, který cílí na telefony a tablety, může předpokládat, že všechny měrné jednotky jsou založeny na následujícím kritériu:

  • 160 jednotek na palce, odpovídající
  • 64 jednotek na centimetr

Vlastnosti jen pro Width čtení a Height vlastnosti definované ve výchozím nastavení mají hodnotu "napodobení VisualElement " –1. Tyto vlastnosti budou odrážet skutečnou velikost prvku v jednotkách nezávislých na zařízení, pouze pokud má prvek velikost a je v rozložení. Tato velikost zahrnuje jakoukoli Padding sadu prvku, ale ne Margin.

Vizuální prvek aktivuje SizeChanged událost, když se změní Width Height . Ukázka WhatSize používá tuto událost k zobrazení velikosti obrazovky programu.

Velikosti metrik

MetricalBoxView používá WidthRequest a HeightRequest k zobrazení BoxView jednoho palce vysoký a jeden centimetr široký.

Odhadované velikosti písem

Ukázka FontSizes ukazuje, jak použít pravidlo 160 jednotek-to-the-inch k určení velikostí písem v jednotkách bodů. Vizuální konzistence mezi platformami používajícími tuto techniku je lepší než Device.GetNamedSize.

Přizpůsobení textu k dostupné velikosti

Blok textu je možné přizpůsobit do určitého obdélníku tak, že vypočítáte některou FontSize z Label následujících kritérií:

  • Řádkování je 120 % velikosti písma (130 % na platformách Windows).
  • Průměrná šířka písma je 50 % velikosti písma.

Ukázka EstimatedFontSize ukazuje tuto techniku. Tento program byl napsán před dostupností Margin vlastnosti, takže k simulaci okraje používá ContentView nastavení s Padding nastavením.

Trojitý snímek obrazovky s odhadovanou velikostí písma

Hodina přizpůsobit velikosti

Ukázka FitToSizeClock ukazuje použití Device.StartTimer k spuštění časovače, který pravidelně upozorní aplikaci, když je čas aktualizovat hodiny. Velikost písma je nastavená na jednu šestou šířku stránky, aby bylo zobrazení co největší.

Problémy s přístupností

Program EstimatedFontSize a program FitToSizeClock obsahují drobné nedostatky: Pokud uživatel změní nastavení přístupnosti telefonu v Androidu nebo Windows 10 Mobile, program už nedokáže odhadnout, jak velký text se vykresluje na základě velikosti písma. Tento problém ukazuje ukázka AccessibilityTest.

Empirické přizpůsobení textu

Dalším způsobem, jak přizpůsobit text obdélníku, je empiricky vypočítat vykreslenou velikost textu a upravit ho nahoru nebo dolů. Program v knize volá GetSizeRequest vizuální prvek k získání požadované velikosti elementu. Tato metoda je zastaralá a programy by měly místo toho volat Measure.

LabelPrvní argument by měl být šířkou kontejneru (pro povolení obtékání), zatímco druhý argument by měl být nastaven tak, aby Double.PositiveInfinity byl výška nepřekonkutovaná. Tento postup demonstruje ukázka EmpirickýFontSize.