Ringkasan Bab 5. Berurusan dengan ukuran
Catatan
Buku ini diterbitkan pada musim semi 2016, dan belum diperbarui sejak saat itu. Ada banyak dalam buku yang tetap berharga, tetapi beberapa materi sudah kedaluarsa, dan beberapa topik tidak lagi sepenuhnya benar atau lengkap.
Beberapa ukuran dalam telah ditemui Xamarin.Forms sejauh ini:
- Tinggi bilah status iOS adalah 20
BoxView
memiliki lebar dan tinggi default 40- Default
Padding
dalam aFrame
adalah 20 - Default
Spacing
padaStackLayout
adalah 6 - Metode
Device.GetNamedSize
mengembalikan ukuran font numerik
Ukuran ini bukan piksel. Sebaliknya, mereka adalah unit independen perangkat yang diakui secara independen oleh setiap platform.
Piksel, titik, dps, DIP, dan DIU
Di awal sejarah Apple Mac dan Microsoft Windows, pemrogram bekerja dalam satuan piksel. Namun, munculnya tampilan resolusi lebih tinggi memerlukan pendekatan yang lebih virtual dan abstrak untuk koordinat layar. Di dunia Mac, programmer bekerja di unit titik, secara tradisional 1/72 inci, sementara pengembang Windows menggunakan unit independen perangkat (DIU) berdasarkan 1/96 inci.
Perangkat seluler, bagaimanapun, umumnya dipegang jauh lebih dekat ke wajah dan memiliki resolusi yang lebih tinggi daripada layar desktop, yang menyiratkan bahwa kepadatan piksel yang lebih besar dapat ditoleransi.
Programmer yang menargetkan perangkat Apple i Telepon dan iPad terus bekerja di unit titik, tetapi ada 160 titik ini hingga inci. Tergantung pada perangkat, mungkin ada 1, 2, atau 3 piksel ke titik tersebut.
Android mirip. Programmer bekerja dalam satuan piksel independen kepadatan (dps), dan hubungan antara dps dan piksel didasarkan pada 160 dps dengan inci.
Ponsel Windows dan perangkat seluler juga telah menetapkan faktor penskalakan yang menyiratkan sesuatu yang dekat dengan 160 unit independen perangkat ke inci.
Catatan
Xamarin.Forms tidak lagi mendukung ponsel atau perangkat seluler berbasis Windows.
Singkatnya, programmer yang Xamarin.Forms menargetkan ponsel dan tablet dapat mengasumsikan bahwa semua unit pengukuran didasarkan pada kriteria berikut:
- 160 unit ke inci, setara dengan
- 64 unit ke sentimeter
Properti dan Height
baca-saja Width
yang ditentukan dengan VisualElement
memiliki nilai "tiruan" default –1. Hanya ketika elemen telah berukuran dan diakomodasi dalam tata letak, properti ini akan mencerminkan ukuran aktual elemen dalam unit independen perangkat. Ukuran ini mencakup set apa pun Padding
pada elemen tetapi bukan Margin
.
Elemen visual mengaktifkan SizeChanged
peristiwa saat Width
atau Height
telah berubah. Sampel WhatSize menggunakan kejadian ini untuk menampilkan ukuran layar program.
Ukuran metrik
MetricalBoxView menggunakan WidthRequest
dan HeightRequest
untuk menampilkan BoxView
tinggi satu inci dan lebar satu sentimeter.
Estimasi ukuran font
Sampel FontSizes menunjukkan cara menggunakan aturan 160-unit-ke-the-inci untuk menentukan ukuran font dalam satuan titik. Konsistensi visual di antara platform yang menggunakan teknik ini lebih baik daripada Device.GetNamedSize
.
Paskan teks ke ukuran yang tersedia
Dimungkinkan untuk mencocokkan blok teks dalam persegi panjang tertentu dengan menghitung FontSize
menggunakan Label
kriteria berikut:
- Penspasian baris adalah 120% dari ukuran font (130% pada platform Windows).
- Lebar karakter rata-rata adalah 50% dari ukuran font.
Sampel EstimatedFontSize menunjukkan teknik ini. Program ini ditulis sebelum Margin
properti tersedia, sehingga menggunakan ContentView
dengan Padding
pengaturan untuk mensimulasikan margin.
Jam yang pas untuk ukuran
Sampel FitToSizeClock menunjukkan penggunaan Device.StartTimer
untuk memulai timer yang secara berkala memberi tahu aplikasi ketika saatnya untuk memperbarui jam. Ukuran font diatur ke seperenam lebar halaman untuk membuat tampilan sebesar mungkin.
Masalah aksesibilitas
Program EstimatedFontSize dan program FitToSizeClock keduanya berisi kelemahan yang halus: Jika pengguna mengubah pengaturan aksesibilitas ponsel di Android atau Windows 10 Mobile, program tidak lagi dapat memperkirakan seberapa besar teks dirender berdasarkan ukuran font. Sampel AccessibilityTest menunjukkan masalah ini.
Teks yang pas secara emmpirik
Cara lain untuk menyesuaikan teks ke persegi panjang adalah dengan menghitung ukuran teks yang dirender secara emmpirik dan menyesuaikannya ke atas atau ke bawah. Program dalam buku memanggil GetSizeRequest
elemen visual untuk mendapatkan ukuran elemen yang diinginkan. Metode itu telah tidak digunakan lagi, dan program seharusnya memanggil Measure
.
Label
Untuk , argumen pertama harus lebar kontainer (untuk memungkinkan pembungkusan), sementara argumen kedua harus diatur ke Double.PositiveInfinity
untuk membuat tinggi tidak dibatasi. Sampel EmpiricalFontSize menunjukkan teknik ini.