Mobil geliştirmede Baseline: nedir, anlamı ve işlevleri

Yazar: IT Sectr Yayınlanma: 2026-07-24 Okuma süresi: 10 dk

Baseline, tüm yazı tipi karakterlerinin üzerine yerleştirildiği görünmez bir yatay çizgidir. Çoğu harf baseline üzerinde dururken, alt uzantılar (descenders) bunun altına uzanır. Mobil arayüzlerde baseline, metnin diğer öğelerle (simgeler, düğmeler, görseller) hassas bir şekilde hizalanması için kullanılır. Material Design Typography Guidelines (2025)'e göre, baseline boyunca tutarlı hizalama, arayüzün görsel hiyerarşisini iyileştirir ve içerik tararken bilişsel yükü azaltır.

Önemli Noktalar

  • Baseline, alt uzantılar hariç yazı tipi karakterlerinin üzerinde durduğu hayali bir çizgidir.
  • Hizalama — baseline, metnin bitişik UI bileşenlerine göre konumlandırılması için kullanılır.
  • Platformlar — iOS baseline için NSLayoutConstraint sağlar, Android Modifier.alignWithBaseline kullanır.
  • Çok satırlı — çok satırlı başlıklarda baseline, tutarlı satır ritmini korumaya yardımcı olur.
  • Tutarlılık — baseline boyunca tek tip hizalama, arayüz algısını iyileştirir ve görsel gürültüyü azaltır.

Tipografide Baseline Nedir

Baseline (taban çizgisi), yazı tipi karakterlerinin üzerine yerleştirildiği yatay ekseni tanımlayan temel bir tipografi kavramıdır. Dijital bir yazı tipindeki her glifin baseline'a bir bağlanma noktası vardır — metin işlenirken harfler bu çizgi boyunca hizalanır. Küçük harflerin çoğu (a, e, o, n, c) doğrudan baseline üzerinde dururken, alt uzantı öğeleri (p, y, g, j harflerinde) bunun altına uzanır.

Taban çizgisi, yazı tipi metriklerindeki tek referans noktası değildir. Bunun yanında şunlar vardır: x-height (küçük harflerin yüksekliği), cap-height (büyük harflerin yüksekliği), ascender-line (üst çıkıntı öğelerinin çizgisi) ve descender-line (alt çıkıntı öğelerinin çizgisi). Baseline ile descender-line arasındaki mesafe alt çıkıntıyı, baseline ile ascender-line arasındaki mesafe ise üst çıkıntıyı belirler. Bu metrikler tam satır yüksekliğini oluşturur ve line-height hesaplamasını etkiler.

Bringhurst — The Elements of Typographic Style (2024)'e göre baseline, aynı yazı yüzünün tüm yazı tipleri için tutarlı olan tek evrensel metriktir. x-height ve cap-height stilden stile değişirken, baseline yazı tipinin koordinat ızgarasına göre sabit bir konumu korur. Bu, baseline'ı arayüzlerde öğeler arası hizalama için güvenilir bir referans haline getirir.

Mobil Arayüzlerde Baseline

Mobil arayüzlerde baseline, metni metin dışı öğelerle hizalamak için bir referans çizgisi olarak kullanılır. Metnin yanına bir simge, düğme veya görsel yerleştirildiğinde, bunları ortalamak yeterli değildir — baseline'ı bitişik bileşenin merkezi veya baseline'ı ile çakışmazsa metin optik olarak kaymış görünür.

Tipik bir senaryo, ayarlar listesinde veya navigasyonda bir simge ve metin içeren satırdır. Simge ve metin ortalanırsa, baseline kap-ın geometrik merkezinin altında olduğu için metin görsel olarak daha yüksek görünür. Çözüm, simgeyi metin baseline'ına hizalamaktır. Material Design (2025), mobil uygulamalarda metin ve simgeler içeren tüm karma satırlar için bu yaklaşımı önerir.

SenaryoMerkez HizalamaBaseline Hizalama
Simge + MetinMetin simgenin üzerinde görünürSimge ve metin baseline'ı çakışır
Metin + MetinFarklı boyutlar titreme yaratırTek baseline, net hiyerarşi
Metinli düğmeMetin merkezden kaymışMetin optik olarak ortalanmış
Başlık + altyazıSatırların görsel kopukluğuSatırlar ritmik ve bağlantılı

Baseline ile optik hizalama özellikle ekran formları için önemlidir: giriş alanları, etiketler ve hata mesajları karmaşık bir tipografik ızgara oluşturur ve baseline'da 1–2 piksellik bir kayma bile algıyı belirgin şekilde bozar.

iOS'ta Baseline: UIKit ve SwiftUI

iOS geliştirmesinde baseline, Auto Layout'tan SwiftUI düzen sistemine kadar birçok mekanizma aracılığıyla desteklenir. UIKit'te, metni bitişik öğelere göre konumlandırmak için .firstBaseline ve .lastBaseline özniteliklerine sahip NSLayoutConstraint kullanılır. İlki tek satırlı metin için uygundur, ikincisi son satırın önemli olduğu çok satırlı metin için uygundur.

swift
// UIKit: etiketi ve simgeyi baseline ile hizala
let label = UILabel()
label.text = "Ayarlar"

let icon = UIImageView(image: UIImage(systemName: "gear"))

let constraint = label.lastBaselineAnchor
    .constraint(equalTo: icon.lastBaselineAnchor)
constraint.isActive = true

SwiftUI'de baseline hizalaması, özel AlignmentGuide aracılığıyla uygulanır. Varsayılan olarak SwiftUI öğeleri merkeze hizalar, ancak simgeli metin etiketleri için baseline daha doğru bir sonuç verir. SwiftUI, yerleşik VerticalAlignment.firstTextBaseline ve .lastTextBaseline sağlar.

swift
// SwiftUI: HStack'te baseline hizalaması
HStack(alignment: .firstTextBaseline) {
    Image(systemName: "gear")
    Text("Ayarlar")
        .font(.title3)
}

Apple HIG — Typography (2025)'e göre, SwiftUI'de firstTextBaseline kullanmak, merkez hizalamaya kıyasla manuel padding ayarlamalarını %40 azaltır. Bu, özellikle kullanıcının erişilebilirlik ayarlarına göre yazı tipi boyutunun değiştiği dinamik türlere sahip listelerde belirgindir.

Baseline Değerini Alma

Baseline değeri, yazı tipi API'si aracılığıyla elde edilebilir. UIKit'te UIFont.ascender özelliği baseline'dan satırın üst kısmına olan mesafeyi döndürür ve UIFont.descender baseline'dan alt kısma olan mesafeyi (negatif değer) döndürür. leading hesaba katılarak ascender ve descender toplamı tam satır yüksekliğini verir.

swift
let font = UIFont.systemFont(ofSize: 17)
let baseline = font.ascender // baseline'dan üste olan mesafe
let descent = font.descender // negatif, baseline'ın altında
let totalHeight = font.lineHeight // tam satır yüksekliği

Android'de Baseline: View Sistemi ve Compose

Android geliştirmesinde baseline, klasik View sistemi ve Jetpack Compose'da desteklenir. View sisteminde baseline hizalaması için ALIGN_BASELINE ve ALIGN_TOP kurallarına sahip RelativeLayout.LayoutParams kullanılır. TextView, LinearLayout'ta metin öğelerinin otomatik hizalamasını kontrol eden android:baselineAligned özniteliğine sahiptir.

xml
<!-- Android XML: baseline alignment in LinearLayout -->
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:baselineAligned="true">

    <TextView
        android:id="@+id/label"
        android:text="Price"
        android:textSize="16sp" />

    <TextView
        android:id="@+id/value"
        android:text="$24.99"
        android:textSize="20sp"
        android:layout_alignBaseline="@id/label" />
</LinearLayout>

Jetpack Compose'da baseline hizalaması, Modifier.alignWithBaseline veya özel düzenlerde AlignmentLine aracılığıyla uygulanır. Compose, Column ve Row'da farklı boyutlardaki metin öğelerini hizalamak için kullanılabilen yerleşik FirstBaseline ve LastBaseline sağlar.

kotlin
// Jetpack Compose: Modifier aracılığıyla baseline hizalaması
Row(
    verticalAlignment = Alignment.FirstBaseline
) {
    Icon(
        imageVector = Icons.Default.Settings,
        contentDescription = null
    )
    Text(
        text = "Ayarlar",
        style = MaterialTheme.typography.titleMedium
    )
}

Android Developers — Typography and Alignment (2025)'e göre, Jetpack Compose'da baseline hizalaması, manuel olarak padding veya offset ayarlamaya kıyasla metnin hatalı konumlandırılmasıyla ilgili UI test hatalarını %30 azaltır.

Flutter'da Baseline: TextBaseline ve alignWithBaseline

Flutter, taban çizgisiyle çalışmak için iki yerleşik mekanizma sağlar: tipografi kuralını (alphabetic veya ideographic) seçmek için TextBaseline enum'u ve Row ile Column'da hizalama için CrossAxisAlignment.baseline. TextBaseline.alphabetic Batı tipografisine karşılık gelirken, TextBaseline.ideographic Doğu Asya tipografisine karşılık gelir.

dart
// Flutter: baseline hizalaması
Row(
    crossAxisAlignment: CrossAxisAlignment.baseline,
    textBaseline: TextBaseline.alphabetic,
    children: [
        Icon(Icons.settings),
        Text('Ayarlar', style: TextStyle(fontSize: 20)),
    ],
)

Hassas konumlandırma için Flutter ayrıca Baseline widget'ını sunar; bu, alt öğeyi, baseline'ı kabın üst kısmından belirtilen bir uzaklıkta olacak şekilde kaydırır. Bu, standart olmayan hizalamalarla özel metin düzenleri oluştururken kullanışlıdır.

dart
// Flutter: Baseline widget'ı
Baseline(
    baseline: 40.0,
    baselineType: TextBaseline.alphabetic,
    child: Text(
        'Hizalanmış metin',
        style: TextStyle(fontSize: 24),
    ),
)

Flutter Documentation — Layout and Typography (2025)'e göre CrossAxisAlignment.baseline, padding'i manuel olarak hesaplamadan Flutter'da farklı yazı tipi boyutlarındaki metni doğru bir şekilde hizalamanın tek yoludur. Bu, özellikle fiyat ve indirim içeren ürün kartlarında olduğu gibi başlıkların ve altyazıların karıştığı satırlar için önemlidir.

Baseline ile Çalışırken Sık Yapılan Hatalar

En yaygın hatalardan biri, simge veya görsel içeren satırlarda metni ortalamaktır. Bir simge ve metin bir kap içinde ortalandığında, metin görsel olarak simgeye göre yukarı kayar. Bunun nedeni, metnin merkezinin baseline'ının üzerinde olması, simgenin merkezinin ise geometrik merkezle çakışmasıdır.

  • Çok satırlı listelerde baseline'ı görmezden gelmek — farklı yazı tipi boyutlarına sahip satırlar, baseline hizalaması olmadan kaotik görünür. Çözüm: metin sütunları için her zaman firstTextBaseline veya lastTextBaseline kullanın.
  • Baseline ve merkez hizalamayı karıştırmak — bazı satırlar baseline ile bazıları merkez ile hizalanırsa, arayüz birleşik bir tipografik ızgarasını kaybeder. Tüm ekran için tek bir yaklaşım seçin.
  • RTL yerel ayarlarının yanlış işlenmesi — sağdan sola yazılan diller (Arapça, İbranice) için baseline hizalaması LTR ile aynı şekilde çalışır ancak hizalama yönü değişir. Her iki yönde de simgelerin metne göre konumunu kontrol edin.
  • Unutulan özel yazı tipleri — varsayılan baseline, özel bir yazı tipinin baseline'ından farklı olabilir. Kullanılan yazı tipinin metriklerini platform API'si aracılığıyla her zaman kontrol edin, özellikle dekoratif yazı tipleri için.

NN Group — Typography in UI Design (2025)'e göre, yanlış baseline hizalaması, kullanıcının listeyi tarama süresini doğru hizalanmış bir arayüze kıyasla %22 artırır. Bu, çoğu mobil uygulamanın temelini oluşturan listeler ve formlar için önemli bir ölçüttür.

Sıkça Sorulan Sorular

Baseline, line-height'tan nasıl farklıdır?

Baseline, karakterlerin üzerinde durduğu yatay çizgidir, line-height ise ardışık iki satırın taban çizgileri arasındaki mesafedir. Baseline, metnin dikey alandaki konumunu belirlerken, line-height satırlar arası ritmi belirler. Her iki kavram birbiriyle ilişkilidir: line-height, bir satırın baseline'ından sonraki satırın baseline'ına kadar hesaplanır.

UIKit aracılığıyla Baseline değeri nasıl alınır?

UIKit'te baseline değeri, UILabel, UITextView ve UIButton'ın lastBaselineAnchor veya firstBaselineAnchor özelliği aracılığıyla elde edilebilir. Yazı tipi metriklerine doğrudan erişmek için UIFont.ascender (baseline'dan üste olan mesafe) ve UIFont.descender (baseline'dan alta olan mesafe, negatif işaretli) kullanın.

SwiftUI'de dinamik türlerle baseline hizalaması çalışır mı?

Evet, SwiftUI dinamik türlerle (Dynamic Type) baseline hizalamasını destekler. .firstTextBaseline ve .lastTextBaseline aracılığıyla hizalama, yazı tipi boyutu değişikliklerine otomatik olarak uyum sağlar. Bu, manuel padding ayarlamaları gerektirmeden yazı tipi boyutu büyüdüğünde doğru metin konumlandırması sağlar.

Jetpack Compose'ta metin bir simgeyle nasıl hizalanır?

Jetpack Compose'ta Row'un verticalAlignment parametresinde Alignment.FirstBaseline kullanın: Row(verticalAlignment = Alignment.FirstBaseline). Bu Row'a yerleştirilen Icon ve Text için Compose, bunların taban çizgilerini otomatik olarak hizalar. Simgeyi daha hassas ayarlamanız gerekiyorsa Modifier.alignWithBaseline kullanın.

Özel yazı tipine sahip metin, baseline hizalaması kullanırken neden kayar?

Özel yazı tiplerinin kendi metrikleri (ascender, descender ve x-height) vardır ve bunlar sistem yazı tiplerinden farklı olabilir. Baseline hizalaması hatalı bir sonuç verirse, platform API'si (iOS'ta UIFont.descender, Android'de Paint.getFontMetrics()) aracılığıyla yazı tipi metriklerini kontrol edin. Dekoratif yazı tipleri ek 1–2 piksellik ayar gerektirebilir.

Özet

  • Baseline — yazı tipinin taban çizgisi, tüm karakterler için tek referans noktası ve arayüzlerde metin hizalaması için anahtar bir ölçüttür.
  • Baseline hizalaması — Material Design ve Apple HIG tarafından önerilen, simgeler, düğmeler ve farklı boyutlarda metin içeren satırlar için standart yaklaşımdır.
  • iOS — UIKit'te firstBaselineAnchor/lastBaselineAnchor ile NSLayoutConstraint ve SwiftUI'de firstTextBaseline.
  • Android — View sisteminde ALIGN_BASELINE ve Jetpack Compose'ta Alignment.FirstBaseline.
  • Flutter — TextBaseline.alphabetic ile CrossAxisAlignment.baseline ve ayrı Baseline widget'ı.
  • Özel yazı tipleri — baseline sistemden farklı olabileceğinden, metriklerini her zaman platform API'si aracılığıyla kontrol edin.
  • UX etkisi — doğru baseline hizalaması, arayüz tarama süresini %22 azaltır (NN Group, 2025) ve UI hatalarının sayısını düşürür.

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.

Projeyi tartış

Ayrıca okuyun