Modern mobil uygulamaların arayüzlerini oluştururken metin ile çalışmak önemli bir görevdir. Yazı tipi seçiminden karakter aralığı ayarlamaya kadar her yön, ürünün algılanmasını etkiler. Apple NSAttributedString Dokümantasyonu'na göre, doğru metin biçimlendirme, okunabilirlik ve arayüz erişilebilirliği ile doğrudan ilişkilidir.
Önemli Noktalar
NSAttributedString, biçimlendirilmiş metinle çalışmak için temel iOS sınıfıdır. Tek tek karakterlere veya aralıklara nitelikler uygulamaya izin verir: UIFont aracılığıyla yazı tipi, UIColor aracılığıyla renk, kern aracılığıyla karakter aralığı ve NSMutableParagraphStyle aracılığıyla satır aralığı. Mobil uygulamalarda NSAttributedString her yerde kullanılır — UILabel'den düzenleme destekli karmaşık UITextView'e kadar.
UIFont, iOS'ta yazı tipleriyle çalışmak için ana sınıftır. Sistem yazı tiplerini, özel yazı tiplerini ve Dynamic Type'ı destekler. UIFont(name:size:) ada göre bir yazı tipi yükler, UIFont.systemFont(ofSize:weight:) sistem yazı tipini yükler. UIFontDescriptor, mevcut bir yazı tipini değiştirmeye izin verir: boyut, ağırlık değiştirme veya dönüşüm matrisi ekleme. Özel yazı tipleri için .ttf dosyası projeye eklenir ve Info.plist'te Fonts provided by application anahtarı altında kaydedilir.
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, paragraf görüntülemeyi yapılandırmak için ParagraphStyle'ın değiştirilebilir bir sürümüdür. Hizalama (alignment), satır aralığı (lineSpacing), girintiler (headIndent, tailIndent) ve kesme modunu (lineBreakMode) kontrol eder. ParagraphStyle, mobil cihazlarda uzun metinlerin okunabilirliği için kritiktir: uygun lineSpacing satırların birleşmesini önler ve lineBreakMode kelime kırpmayı önler. paragraphSpacing ayarı, paragraflar arasındaki boşluğu tanımlar.
SpannableString, Android'de metin biçimlendirme için ana araçtır. Her biri bir yönünden sorumlu olan Span nesneleri mekanizmasıyla çalışır: StyleSpan kalın veya italik için, ForegroundColorSpan renk için, URLSpan bağlantılar için, UnderlineSpan altı çizgi için. SpannableStringBuilder, NSMutableAttributedString'in eşdeğeridir ve birden çok parçadan metin oluşturmaya izin verir. Mobil uygulamalarda biçimlendirilmiş metinle esnek arayüzler oluşturmak için SpannableString'i anlamak önemlidir.
Typeface, Android'de yazı tipleriyle çalışmak için sınıftır. Sistem yazı tipleri Roboto ve Noto'nun yanı sıra özel yazı tiplerini de destekler. Typeface.createFromResource() res/font/ konumundan bir yazı tipi yükler, Typeface.createFromAsset() varlıklar klasöründen yükler. Android 8.0+, birden çok yazı tipi dosyasını tek bir kaynakta birleştiren XML'de yazı tipi ailelerini destekler. Android'de mobil uygulamalarda metin için özel bir yazı tipi, android:fontFamily özniteliği aracılığıyla veya programlı olarak setTypeface() kullanılarak ayarlanır.
TextMeasurer (API 29+), bir View'a bağlanmadan metni ölçmek için modern bir araçtır. Oluşturmadan önce genişlik, yükseklik ve karakter konumlarını hesaplar. Eski API'lerde, tek satırlı metin için Paint.measureText() veya çok satırlı metin için StaticLayout kullanılır. TextMeasurer, metnin Canvas.drawText() aracılığıyla çizildiği özel View'larda özellikle kullanışlıdır. Doğru ölçüm, arayüzde karakter kırpmasını önler.
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
Mobil uygulamalarda tipografi, yazı tiplerinin, karakter aralığının ve satır aralığının kapsamlı bir yapılandırmasıdır. Mobil geliştirmede doğru tipografi, metin okunabilirliğini ve arayüzün görsel algısını doğrudan etkiler. Her iki platformda da bulunan temel parametrelere bakalım.
Kerning, belirli karakter çiftleri (AV, To, Wa) arasındaki boşluğun ayarlanmasıdır. Tracking, metnin tamamı veya bir kısmı için tek tip karakter aralığıdır. iOS'ta kerning NSKernAttributeName aracılığıyla, Android'de ise TextView'ın letterSpacing özelliği aracılığıyla ayarlanır. Negatif değerler karakterleri yakınlaştırır, pozitif değerler uzaklaştırır. Mobil geliştirmede tipografi, bu parametrelerin dikkatli bir şekilde ayarlanmasını gerektirir: büyük başlıklar için karakter aralığı genellikle artırılır, gövde metni için standart kalır.
| Parametre | iOS | Android |
|---|---|---|
| Stilize Dize | NSAttributedString | SpannableString |
| Yazı Tipi | UIFont / CTFont | Typeface |
| Karakter Aralığı | NSKernAttributeName | letterSpacing |
| Satır Aralığı | lineSpacing | lineSpacingExtra |
| Bitişik Harfler | NSLigatureAttributeName | OpenType özellikleri |
| Üç Nokta | lineBreakMode .byTruncatingTail | android:ellipsize |
Bitişik harfler, iki veya daha fazla karakterin birleşimini (fi, fl, ffi) değiştiren özel gliflerdir. iOS'ta bitişik harfler NSLigatureAttributeName aracılığıyla kontrol edilir: 0 — devre dışı, 1 — standart, 2 — mevcut tümü. Android'de bitişik harfler, OpenType özellikleri aracılığıyla yazı tipi düzeyinde kontrol edilir. Bitişik harfleri etkinleştirmek, özellikle serif yazı tiplerinde metnin görünümünü iyileştirir. Mobil geliştirmede tipografi, bitişik harfleri esas olarak başlıklar ve logolar için kullanır.
Özel yazı tipleri, bir uygulama için benzersiz bir görsel stil oluşturmanın ana araçlarından biridir. Markayı vurgulamaya ve kullanıcı deneyimini iyileştirmeye yardımcı olurlar. Mobil uygulamalarda özel yazı tipleri, başlıklar, logolar, vurgu öğeleri ve kurumsal kimlik için kullanılır.
Değişken Yazı Tipleri, tek bir dosyanın birden çok stil içerdiği modern bir yazı tipi teknolojisidir: inceden ekstra kalına, dardan genişe kadar. Bu, birden çok yazı tipi dosyasını bir taneyle değiştirerek uygulama boyutunu azaltır. iOS'ta Değişken Yazı Tipleri, weight parametresiyle UIFont aracılığıyla desteklenir. Android'de — değişkenlik eksenlerini (wght, wdth, slnt) belirten Typeface.Builder aracılığıyla. Değişken Yazı Tipleri kullanmak, mobil uygulamalarda tipografiyi basitleştirir: geliştiricinin her stil için ayrı dosyalar yüklemesi gerekmez.
let customFont = UIFont(name: "CustomFont-Regular", size: 16)
let scaledFont = UIFontMetrics.default
.scaledFont(for: customFont)
label.font = scaledFont
label.adjustsFontForContentSizeCategory(true)
iOS'ta NSTextAttachment, NSAttributedString içine UIImage yerleştirmeye izin verir — görüntü taban çizgisiyle hizalanır ve metinle birlikte hareket eder. Android'de eşdeğer, SpannableString içindeki ImageSpan'dir. Her iki yaklaşım da emojili sohbet, simgeli haber akışları ve özel onay kutulu formlar için kullanışlıdır. Metin ve grafiklerin uyumlu görünmesi için görüntünün yazı tipi yüksekliğine uygun şekilde ölçeklenmesi önemlidir.
Temel biçimlendirmenin yanı sıra, mobil uygulamalarda metin ek görsel efektleri destekler: gölgeler, anahat, üstü çizili ve altı çizili. Bu araçlar tipografinin olanaklarını genişletir ancak okunabilirliği korumak için dikkatli uygulama gerektirir.
iOS'ta metin gölgesi, offset, blurRadius ve color ile NSShadow aracılığıyla ayarlanır. Anahat — NSStrokeWidthAttributeName aracılığıyla: negatif değerler anahatla doldurma oluşturur, pozitif değerler yalnızca anahattı oluşturur. Üstü çizili — NSUnderlineStyle (.single, .thick, .double). Android'de TextView gölgesi, android:shadowRadius, android:shadowDx, android:shadowDy aracılığıyla yapılandırılır. SpannableString, StrikethroughSpan ve UnderlineSpan'ı destekler. Android'de metin anahattı, OutlineSpan veya özel bir yazı tipi aracılığıyla uygulanır.
Üç nokta, kapsayıcı taştığında metnin üç noktayla kesilmesidir. iOS'ta lineBreakMode .byTruncatingTail ve numberOfLines aracılığıyla yapılandırılır. Android'de — android:ellipsize="end" ve android:maxLines aracılığıyla. Marquee, Android'de android:ellipsize="marquee" aracılığıyla kullanılabilen kayan metin animasyonudur. iOS'ta yerleşik bir eşdeğer yoktur — MarqueeLabel kitaplığı kullanılır. İçerik kırpmasını önlemek için mobil uygulamalardaki tüm tek satırlı metinler için üç nokta zorunludur.
Dynamic Type, kullanıcının Erişilebilirlik ayarlarına göre yazı tipi boyutunu ayarlayan iOS'ta uyarlanabilir bir metin sistemidir. Özel yazı tiplerini ölçeklemek için UIFontMetrics kullanın. Dynamic Type, erişilebilirlik uyumlu uygulamalar için zorunludur. Android'de eşdeğer, sistem metin boyutu ayarlarına göre ölçeklenen sp birimleri ve scaledPixels'tır.
Sıkça Sorulan Sorular
NSAttributedString, karakter ve aralık düzeyinde yazı tipi, renk ve stil nitelikleriyle biçimlendirilmiş metin oluşturmak için bir iOS sınıfıdır.
SpannableString, Span nesneleri (ForegroundColorSpan, StyleSpan, URLSpan, UnderlineSpan) aracılığıyla metin işaretlemesi için bir Android sınıfıdır.
.ttf dosyasını projeye ekleyin, Info.plist'te Fonts provided by application anahtarı altında belirtin ve UIFont(name:) kullanın.
.ttf dosyasını res/font/ konumuna yerleştirin, bir XML yazı tipi ailesi oluşturun ve android:fontFamily belirtin veya Typeface.createFromAsset() kullanın.
Kerning, karakter çiftleri arasındaki boşluktur. Bitişik harfler, harf kombinasyonları için özel gliflerdir. NSKernAttributeName ve NSLigatureAttributeName aracılığıyla kontrol edilirler.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.