Bekerja dengan teks adalah tugas utama saat membuat antarmuka aplikasi seluler modern. Dari pemilihan font hingga penyesuaian jarak antar karakter — setiap aspek memengaruhi persepsi produk. Menurut Dokumentasi Apple NSAttributedString, format teks yang tepat terkait langsung dengan keterbacaan dan aksesibilitas antarmuka.
Poin Penting
NSAttributedString adalah kelas fundamental iOS untuk bekerja dengan teks terformat. Ini memungkinkan penerapan atribut ke karakter atau rentang individual: font melalui UIFont, warna melalui UIColor, jarak karakter melalui kern, dan jarak baris melalui NSMutableParagraphStyle. Dalam aplikasi seluler, NSAttributedString digunakan di mana-mana — dari UILabel hingga UITextView kompleks dengan dukungan pengeditan.
UIFont adalah kelas utama untuk bekerja dengan font di iOS. Ini mendukung font sistem, font kustom, dan Dynamic Type. UIFont(name:size:) memuat font berdasarkan nama, UIFont.systemFont(ofSize:weight:) memuat font sistem. UIFontDescriptor memungkinkan modifikasi font yang ada: mengubah ukuran, berat, atau menambahkan matriks transformasi. Untuk font kustom, file .ttf ditambahkan ke proyek dan didaftarkan di Info.plist di bawah kunci Fonts provided by application.
let attributes: [NSAttributedString.Key: Any] = [
.font: UIFont(name: "HelveticaNeue-Bold", size: 18) as Any,
.foregroundColor: UIColor.darkGray as Any,
.kern: 1.5 as Any
]
let attributedString = NSAttributedString(
string: "Форматированный текст",
attributes: attributes
)
label.attributedText = attributedString
NSMutableParagraphStyle adalah versi yang dapat diubah dari ParagraphStyle untuk mengonfigurasi tampilan paragraf. Ini mengontrol perataan (alignment), jarak baris (lineSpacing), indentasi (headIndent, tailIndent), dan mode pemotongan (lineBreakMode). ParagraphStyle sangat penting untuk keterbacaan teks panjang di perangkat seluler: lineSpacing yang tepat mencegah penggabungan baris, dan lineBreakMode mencegah pemotongan kata. Pengaturan paragraphSpacing menentukan jarak antar paragraf.
SpannableString adalah alat utama untuk format teks di Android. Ini bekerja melalui mekanisme objek Span, masing-masing bertanggung jawab atas satu aspek: StyleSpan untuk tebal atau miring, ForegroundColorSpan untuk warna, URLSpan untuk tautan, UnderlineSpan untuk garis bawah. SpannableStringBuilder adalah padanan NSMutableAttributedString, memungkinkan pembangunan teks dari beberapa fragmen. Memahami SpannableString sangat penting untuk membuat antarmuka yang fleksibel dengan teks terformat dalam aplikasi seluler.
Typeface adalah kelas untuk bekerja dengan font di Android. Ini mendukung font sistem Roboto dan Noto, serta font kustom. Typeface.createFromResource() memuat font dari res/font/, Typeface.createFromAsset() dari folder assets. Android 8.0+ mendukung keluarga font dalam XML, menggabungkan beberapa file font menjadi satu sumber daya. Font kustom untuk teks dalam aplikasi seluler di Android diatur melalui atribut android:fontFamily atau secara terprogram menggunakan setTypeface().
TextMeasurer (API 29+) adalah alat modern untuk mengukur teks tanpa terikat ke View. Ini menghitung lebar, tinggi, dan posisi karakter sebelum rendering. Di API lama, Paint.measureText() digunakan untuk teks satu baris atau StaticLayout untuk teks multi-baris. TextMeasurer sangat berguna dalam View kustom di mana teks digambar melalui Canvas.drawText(). Pengukuran yang tepat mencegah pemotongan karakter dalam antarmuka.
val spannable = SpannableString("Жирный текст с цветом")
spannable.setSpan(
StyleSpan(Typeface.BOLD),
0, 6,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
)
spannable.setSpan(
ForegroundColorSpan(Color.RED),
14, 19,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
)
textView.text = spannable
Tipografi dalam aplikasi seluler adalah konfigurasi komprehensif font, jarak karakter, dan jarak baris. Tipografi yang tepat dalam pengembangan seluler secara langsung memengaruhi keterbacaan teks dan persepsi visual antarmuka. Mari kita lihat parameter utama yang tersedia di kedua platform.
Kerning adalah penyesuaian jarak antara pasangan karakter tertentu (AV, To, Wa). Tracking adalah jarak karakter seragam untuk seluruh teks atau sebagian darinya. Di iOS, kerning diatur melalui NSKernAttributeName, di Android — melalui properti letterSpacing dari TextView. Nilai negatif mendekatkan karakter, nilai positif menjauhkannya. Tipografi dalam pengembangan seluler memerlukan penyesuaian yang cermat dari parameter ini: untuk judul besar, jarak karakter biasanya ditingkatkan, untuk teks tubuh tetap standar.
| Parameter | iOS | Android |
|---|---|---|
| String Bergaya | NSAttributedString | SpannableString |
| Font | UIFont / CTFont | Typeface |
| Jarak Karakter | NSKernAttributeName | letterSpacing |
| Jarak Baris | lineSpacing | lineSpacingExtra |
| Ligatur | NSLigatureAttributeName | Fitur OpenType |
| Elipsis | lineBreakMode .byTruncatingTail | android:ellipsize |
Ligatur adalah glyph khusus yang menggantikan kombinasi dua atau lebih karakter: fi, fl, ffi. Di iOS, ligatur dikontrol melalui NSLigatureAttributeName: 0 — dinonaktifkan, 1 — standar, 2 — semua tersedia. Di Android, ligatur dikontrol di tingkat font melalui fitur OpenType. Mengaktifkan ligatur meningkatkan tampilan teks, terutama dalam font serif. Tipografi dalam pengembangan seluler menggunakan ligatur terutama untuk judul dan logo.
Font kustom adalah salah satu alat utama untuk menciptakan gaya visual unik untuk aplikasi. Mereka membantu menonjolkan merek dan meningkatkan pengalaman pengguna. Dalam aplikasi seluler, font kustom digunakan untuk judul, logo, elemen aksen, dan identitas perusahaan.
Font Variabel adalah teknologi font modern di mana satu file berisi banyak gaya: dari tipis hingga ekstra tebal, dari sempit hingga lebar. Ini mengurangi ukuran aplikasi dengan mengganti beberapa file font dengan satu. Di iOS, Font Variabel didukung melalui UIFont dengan parameter weight. Di Android — melalui Typeface.Builder yang menentukan sumbu variabilitas wght, wdth, slnt. Menggunakan Font Variabel menyederhanakan tipografi dalam aplikasi seluler: pengembang tidak perlu memuat file terpisah untuk setiap gaya.
let customFont = UIFont(name: "CustomFont-Regular", size: 16)
let scaledFont = UIFontMetrics.default
.scaledFont(for: customFont)
label.font = scaledFont
label.adjustsFontForContentSizeCategory(true)
NSTextAttachment di iOS memungkinkan penyematan UIImage di dalam NSAttributedString — gambar sejajar dengan garis dasar dan bergerak bersama teks. Di Android, padanannya adalah ImageSpan di dalam SpannableString. Kedua pendekatan berguna untuk obrolan dengan emoji, umpan berita dengan ikon, dan formulir dengan kotak centang kustom. Penting untuk menskalakan gambar dengan benar agar sesuai dengan tinggi font sehingga teks dan grafik terlihat harmonis.
Selain format dasar, teks dalam aplikasi seluler mendukung efek visual tambahan: bayangan, garis luar, coretan, dan garis bawah. Alat-alat ini memperluas kemungkinan tipografi tetapi memerlukan penerapan yang cermat untuk menjaga keterbacaan.
Bayangan teks di iOS diatur melalui NSShadow dengan offset, blurRadius, dan color. Garis luar — melalui NSStrokeWidthAttributeName: nilai negatif membuat isian dengan garis luar, nilai positif hanya membuat kontur. Coretan — NSUnderlineStyle (.single, .thick, .double). Di Android, bayangan TextView dikonfigurasi melalui android:shadowRadius, android:shadowDx, android:shadowDy. SpannableString mendukung StrikethroughSpan dan UnderlineSpan. Garis luar teks di Android diimplementasikan melalui OutlineSpan atau font kustom.
Elipsis adalah pemotongan teks dengan elipsis ketika wadah meluap. Di iOS, dikonfigurasi melalui lineBreakMode .byTruncatingTail dan numberOfLines. Di Android — melalui android:ellipsize="end" dan android:maxLines. Marquee adalah animasi teks bergulir yang tersedia di Android melalui android:ellipsize="marquee". Di iOS, tidak ada padanan bawaan — pustaka MarqueeLabel digunakan. Elipsis wajib untuk semua teks satu baris dalam aplikasi seluler untuk menghindari pemotongan konten.
Dynamic Type adalah sistem teks adaptif di iOS yang menyesuaikan ukuran font berdasarkan pengaturan Aksesibilitas pengguna. Gunakan UIFontMetrics untuk menskalakan font kustom. Dynamic Type wajib untuk aplikasi yang sesuai dengan Aksesibilitas. Di Android, padanannya adalah unit sp dan scaledPixels, yang berskala sesuai dengan pengaturan ukuran teks sistem.
Pertanyaan yang Sering Diajukan
NSAttributedString adalah kelas iOS untuk membuat teks terformat dengan atribut font, warna, dan gaya di tingkat karakter dan rentang.
SpannableString adalah kelas Android untuk markup teks melalui objek Span: ForegroundColorSpan, StyleSpan, URLSpan, UnderlineSpan.
Tambahkan file .ttf ke proyek, tentukan di Info.plist di bawah kunci Fonts provided by application, lalu gunakan UIFont(name:).
Tempatkan file .ttf di res/font/, buat keluarga font XML, dan tentukan android:fontFamily atau gunakan Typeface.createFromAsset().
Kerning adalah jarak antara pasangan karakter. Ligatur adalah glyph khusus untuk kombinasi huruf. Keduanya dikontrol melalui NSKernAttributeName dan NSLigatureAttributeName.
Ringkasan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.