pt — nedir, Points ve iOS'ta ölçekleme

Yazar: IT Sectr Yayınlanma: 2026-02-25 Okuma süresi: 8 dk

pt — points, iOS ve macOS'ta arayüzü fiziksel ekran çözünürlüğünden soyutlayan mantıksal bir ölçü birimidir. Bir point, Retina olmayan bir ekranda (@1x) bir piksele, Retina'da (@2x, @3x) ise iki veya üç piksele karşılık gelir. Bu makale, pt'nin çalışma prensibini, farklı ekranlarda ölçeklemeyi, CGPoint ve UIFont.pointSize kullanımını açıklamaktadır.

Önemli noktalar

  • pt — fiziksel ekran çözünürlüğünden bağımsız, iOS mantıksal noktası
  • @1x, @2x, @3x — bir noktaya kaç piksel düştüğünü belirleyen ölçek faktörü
  • CGPoint — pt cinsinden koordinatlar için yapı, tüm konumlandırma işlemlerinin temeli
  • UIFont.pointSize — nokta cinsinden yazı tipi boyutu, her zaman pt olarak döndürülür
  • Ekran mesafesi: iPhone 15 Pro — 460 PPI piksel yoğunluğunda 1 pt = 3 px

iOS'ta pt nedir?

pt (point) — geliştiricinin arayüzü, fiziksel ekran çözünürlüğünden bağımsız soyut koordinatlarla tanımlamasını sağlayan iOS'ta mantıksal bir ölçü birimidir. Apple, points kavramını 2010 yılında iPhone 4 ve Retina ekranın piyasaya sürülmesiyle tanıttı. Retina'dan önce, geliştiriciler doğrudan pikselleri kullanıyordu — bir UI pikseli bir fiziksel piksele eşitti.

iOS koordinat sistemi noktalar üzerine kurulmuştur: (0,0) noktası ekranın sol üst köşesindedir, X ekseni sağa, Y ekseni aşağı doğrudur. Her cihaz sınıfı için nokta cinsinden ekran boyutu sabittir: iPhone SE — 375×667 pt, iPhone 15 Pro — 393×852 pt, iPad — 768×1024 pt (dikey), 1024×768 pt (yatay). Fiziksel çözünürlük 1179×2556 px (iPhone 15 Pro) olabilir — ancak geliştirici noktalarla çalışır.

Apple Human Interface Guidelines'a göre, noktalar UIKit'in temel soyutlamasıdır. Tüm framework'ler — UIKit, SwiftUI, Core Graphics, SpriteKit — noktalarla çalışır. Piksellere dönüştürme, işleme aşamasında UIScreen.nativeScale aracılığıyla otomatik olarak gerçekleşir.

Ölçek faktörleri: @1x, @2x, @3x

Ölçek faktörü, bir mantıksal noktaya kaç fiziksel pikselin karşılık geldiğini belirler. Apple üç seviye kullanır: @1x — 1 pt = 1 px (Retina olmayan iPad mini, eski modeller), @2x — 1 pt = 2 px (2020 öncesi çoğu iPhone, iPad Retina), @3x — 1 pt = 3 px (iPhone X ve sonrası, iPhone 15 Pro dahil).

Cihazpt cinsinden boyutpx cinsinden boyutÖlçek
iPhone SE (3. nesil)375 × 667750 × 1334@2x
iPhone 14390 × 8441170 × 2532@3x
iPhone 15 Pro Max430 × 9321290 × 2796@3x
iPad Pro 12.9"1024 × 13662048 × 2732@2x
iPad mini (6. nesil)744 × 11331488 × 2266@2x

Ölçek faktörüne UIScreen.main.scale (UIKit için) ve @Environment(\.displayScale) (SwiftUI için) aracılığıyla erişilebilir. Varlıklar yüklenirken kullanılır: sistem, Assets.xcassets'ten @2x veya @3x sonekine sahip görüntüyü otomatik olarak seçer. Geliştirici, Retina cihazlarda @1x görüntüleri yüklememelidir — bu, performansı ve kaliteyi düşürür.

CGPoint ve nokta cinsinden koordinatlar

CGPoint yapısı, iOS ve macOS'ta koordinatları temsil etmek için temel türdür. İki alan içerir: x (CGFloat) ve y (CGFloat), değerler nokta cinsinden belirtilir. CGPoint, tüm Apple framework'lerinde kullanılır: UIKit (frame.origin), Core Graphics (CGContext), SpriteKit (SKNode.position), Core Animation (CALayer.position).

swift
// CGPoint — nokta cinsinden koordinatlarla çalışma
import UIKit

// Bir nokta oluşturma
let point = CGPoint(x: 100.0, y: 200.0)
print("Koordinatlar: \(point.x), \(point.y)")

// Matematiksel işlemler
let offset = CGPoint(x: 16.0, y: 8.0)
let translated = CGPoint(
    x: point.x + offset.x,
    y: point.y + offset.y
)

// Noktalar arasındaki mesafe
func distance(from a: CGPoint, to b: CGPoint) -> CGFloat {
    let dx = b.x - a.x
    let dy = b.y - a.y
    return sqrt(dx * dx + dy * dy)
}

// Noktaları piksellere dönüştürme
extension CGPoint {
    func toPixels(scale: CGFloat) -> CGPoint {
        CGPoint(x: x * scale, y: y * scale)
    }
}

Örnekteki toPixels yöntemi, UIScreen.main.scale aracılığıyla noktaları fiziksel piksellere dönüştürmeyi gösterir. UIKit'te bu dönüştürme işleme sırasında otomatik olarak gerçekleşir, ancak Core Graphics ve Metal ile çalışırken geliştiricinin açık piksel dönüştürmeye ihtiyacı olabilir. Tüm animasyon hesaplamaları, çarpışma tespiti ve düzen noktalar cinsinden yapılır.

UIFont.pointSize ve tipografi

UIFont.pointSize özelliği, yazı tipi boyutunu nokta cinsinden döndürür — bu, iOS'ta matbaacılıktan miras alınan standart tipografi birimidir (1 pt = 1/72 inç). Apple, Mac OS'in ilk sürümlerinden beri yazı tipleri için pt kullanmaktadır. iOS'ta yazı tipi boyutu, UIFont.systemFont(ofSize:) veya SwiftUI Font.system(size:) aracılığıyla nokta cinsinden belirtilir.

swift
// Swift'te UIFont.pointSize ile çalışma
import UIKit

// pt cinsinden boyutla yazı tipi oluşturma
let titleFont = UIFont.systemFont(ofSize: 28.0, weight: .bold)
let bodyFont = UIFont.systemFont(ofSize: 17.0)
let captionFont = UIFont.systemFont(ofSize: 12.0)

// pointSize okuma
print("Başlık boyutu: \(titleFont.pointSize) pt")

// Dynamic Type — otomatik ölçekleme
let scaledFont = UIFontMetrics.default.scaledFont(for: bodyFont)
print("Ölçeklenmiş: \(scaledFont.pointSize) pt")

// Yazı tipi boyutlarını karşılaştırma
func font(from size: CGFloat, weight: UIFont.Weight) -> UIFont {
    UIFont.systemFont(ofSize: size, weight: weight)
}

UIFontMetrics, iOS 11'de eklenen dinamik bir yazı tipi ölçekleme mekanizmasıdır. Kullanıcının erişilebilirlik ayarlarına (Settings > Display & Brightness > Text Size) bağlı olarak pointSize'ı otomatik olarak ayarlar. UIFontMetrics kullanılmazsa, yazı tipleri ölçeklenmez ve bu WCAG erişilebilirlik gereksinimlerini ihlal eder.

pt vs px: farklar

pt ve px arasındaki fark, iOS geliştirmeyi anlamak için kritiktir. pt mantıksal bir birimdir, px fiziksel bir birimdir. Bir nokta, ölçek faktörüne bağlı olarak 1, 2 veya 3 piksele karşılık gelebilir. Geliştirici noktalarla çalışır, sistem bunları rasterleştirme aşamasında piksellere dönüştürür.

Özellikptpx
Birim türüMantıksal (cihazdan bağımsız)Fiziksel (donanım pikseli)
Çözünürlüğe bağlıHayırEvet
Kullanım yeriUIKit, SwiftUI, Core Graphics, düzenGörüntüler, Metal, raw buffer
Dönüştürme1 pt = scale × px (ölçek 1 ila 3)1 px = pt / scale
Örnek (iPhone 15 Pro)393 × 852 pt1179 × 2556 px

Önemli sonuç: Nokta cinsinden arayüz boyutu, aynı sınıftaki tüm cihazlarda aynıdır. 375 pt genişliğinde bir ekran — bu hem iPhone SE hem de iPhone 14 (temel model) için geçerlidir. Tek fark, bu 375 pt'ye kaç fiziksel piksel sığdığıdır. Bu, her cihaz için manuel uyarlama olmadan tek tip bir UI sağlar.

SwiftUI'da pt

SwiftUI'da geliştirici açıkça noktalarla çalışmaz — tüm boyutlar Dp (cihazdan bağımsız noktalar, pt'ye eşdeğer) aracılığıyla belirtilir. SwiftUI, işleme sırasında otomatik olarak ölçek faktörünü uygular ancak ortam değeri displayScale aracılığıyla erişim sağlar.

swift
// SwiftUI — noktalar ve ölçek faktörü ile çalışma
import SwiftUI

struct ContentView: View {
    @Environment(\.displayScale) private var displayScale

    var body: some View {
        VStack(spacing: 16) {
            Text("Başlık")
                .font(.system(size: 28, weight: .bold))

            Text("Örnek gövde metni")
                .font(.body)

            HStack {
                Text("Ölçek faktörü:")
                    .font(.caption)
                Text("\(displayScale, specifier: "%.1f")")
                    .font(.caption.weight(.bold))
            }
        }
        .padding(20)
        .frame(width: 300)
    }
}

SwiftUI, pt'yi framework düzeyinde soyutlar. .font(.body) otomatik olarak Dynamic Type'ı kullanır — yazı tipi boyutu kullanıcı ayarlarına göre uyarlanır. SwiftUI, yazı tipi boyutunun piksel cinsinden belirtilmesine izin vermez — yalnızca Font ve tipografi sistemi aracılığıyla. Bu, geliştiricinin ek çabası olmadan arayüz erişilebilirliğini garanti eder.

Sıkça sorulan sorular

pt ve px arasındaki fark nedir?

pt — ekran çözünürlüğünden bağımsız iOS mantıksal noktası. px — ekranın fiziksel pikseli. iPhone 15 Pro'da bir nokta üç piksele (@3x), iPad Pro'da ikiye (@2x) eşittir. Geliştirici her zaman noktalarla çalışır.

Cihazın ölçek faktörü nasıl öğrenilir?

UIKit'te: UIScreen.main.scale. SwiftUI'da: @Environment(\.displayScale). Tipik değerler: 1.0 (@1x), 2.0 (@2x), 3.0 (@3x). iPhone 15 Pro Max'te değer 3.0'dır.

Gövde metni için hangi yazı tipi boyutu kullanılmalı?

Apple, ana metin (UIFontTextStyle.body) için 17 pt önermektedir. Başlıklar için 28–34 pt, altyazılar için 12–13 pt. Dynamic Type stilleri, kullanıcının erişilebilirlik ayarlarına göre otomatik olarak ölçeklenir.

iOS'ta Dynamic Type nedir?

Dynamic Type — iOS 7'de tanıtılan iOS otomatik yazı tipi ölçekleme sistemidir. Metnin sistem yazı tipi boyutu ayarlarına (Text Size) ve erişilebilirlik parametrelerine (Bold Text, Larger Text) uyum sağlamasına olanak tanır. UIFontMetrics veya SwiftUI Font stilleri aracılığıyla uygulanır.

iOS için @1x varlıkları oluşturmak gerekli mi?

Hayır. Modern Apple cihazları, @2x veya @3x ile Retina ekranlar kullanır. @1x görüntüler yalnızca Retina olmayan iPad'lerle (iPad 2, iPad mini 1. nesil) uyumluluk için gereklidir. iOS 13'ten itibaren tüm cihazlar en az @2x'i destekler.

Özet

  • pt — arayüzü fiziksel çözünürlük ve ölçek faktöründen soyutlayan iOS mantıksal birimi
  • @2x ve @3x — nokta başına piksel sayısını belirleyen Retina ekranlar için ölçek faktörleri
  • CGPoint — nokta cinsinden koordinatlar için yapı, UIKit'teki tüm konumlandırma işlemlerinin temeli
  • UIFont.pointSize — UIFontMetrics aracılığıyla Dynamic Type desteği ile nokta cinsinden yazı tipi boyutu
  • SwiftUI pt'yi tamamen soyutlar, otomatik uyarlama için Font ve Dynamic Type kullanır
  • iOS varlıkları @2x ve @3x olarak sağlanmalıdır, modern cihazlar için @1x gerekli değildir
  • Dynamic Type — kullanıcı için yazı tiplerini otomatik olarak ölçekleyen zorunlu erişilebilirlik mekanizması

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