pt — mi ez, pontok és skálázás iOS-ben

Szerző: IT Sectr Megjelenés: 2026-02-25 Olvasási idő: 8 perc

pt — pontok, logikai mértékegység iOS és macOS rendszerekben, amely elvonatkoztatja a felületet a képernyő fizikai felbontásától. Egy point egy pixelt jelent Retina nélküli (@1x) képernyőn, és két vagy három pixelt Retina (@2x, @3x) esetén. A cikk elmagyarázza a pt működési elvét, a skálázást különböző képernyőkön, valamint a CGPoint és UIFont.pointSize használatát.

Főbb pontok

  • pt — logikai iOS pont, független a képernyő fizikai felbontásától
  • @1x, @2x, @3x — skálázási tényező, amely meghatározza, hány pixel jut egy pontra
  • CGPoint — struktúra koordinátákhoz pt-ben, minden pozícionálási művelet alapja
  • UIFont.pointSize — betűméret pontokban, mindig pt-ben adja vissza
  • Távolság a képernyőtől: iPhone 15 Pro — 1 pt = 3 px 460 PPI pixelsűrűségnél

Mi az a pt iOS-ben?

pt (point) — logikai mértékegység iOS-ben, amely lehetővé teszi a fejlesztő számára, hogy a felületet absztrakt koordinátákban írja le, függetlenül a kijelző fizikai felbontásától. Az Apple 2010-ben vezette be a point fogalmát az iPhone 4 és a Retina kijelző megjelenésével. A Retina előtt a fejlesztők közvetlenül pixeleket használtak — egy UI pixel egy fizikai pixelnek felelt meg.

Az iOS koordináta-rendszere pontokra épül: a (0,0) pont a képernyő bal felső sarkában van, az X tengely jobbra, az Y tengely lefelé mutat. A képernyő mérete pontokban állandó minden eszközosztályban: iPhone SE — 375×667 pt, iPhone 15 Pro — 393×852 pt, iPad — 768×1024 pt (álló), 1024×768 pt (fekvő). A fizikai felbontás lehet 1179×2556 px (iPhone 15 Pro) — de a fejlesztő pontokkal dolgozik.

Az Apple Human Interface Guidelines szerint a pontok a UIKit alapvető absztrakciói. Az összes keretrendszer — UIKit, SwiftUI, Core Graphics, SpriteKit — pontokkal működik. A pixelekké alakítás automatikusan történik a renderelési fázisban a UIScreen.nativeScale segítségével.

Skálázási tényezők: @1x, @2x, @3x

A skálázási tényező (scale factor) határozza meg, hogy hány fizikai pixel felel meg egy logikai pontnak. Az Apple három szintet használ: @1x — 1 pt = 1 px (Retina nélküli iPad mini, régebbi modellek), @2x — 1 pt = 2 px (a legtöbb iPhone 2020-ig, iPad Retina), @3x — 1 pt = 3 px (iPhone X és újabbak, beleértve az iPhone 15 Pro-t).

EszközMéret pt-benMéret px-benSkála
iPhone SE (3rd gen)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 (6th gen)744 × 11331488 × 2266@2x

A scale factor értéke elérhető a UIScreen.main.scale (UIKit esetén) és a @Environment(\.displayScale) (SwiftUI esetén) segítségével. Az eszközök betöltésekor használatos: a rendszer automatikusan kiválasztja a @2x vagy @3x utótagú képet az Assets.xcassets-ből. A fejlesztő nem tölt be @1x képeket Retina eszközökön — ez csökkenti a teljesítményt és a minőséget.

CGPoint és koordináták pontokban

A CGPoint struktúra — az alapvető típus a koordináták reprezentálásához iOS és macOS rendszerekben. Két mezőt tartalmaz: x (CGFloat) és y (CGFloat), az értékek pontokban vannak megadva. A CGPoint az összes Apple keretrendszerben használatos: UIKit (frame.origin), Core Graphics (CGContext), SpriteKit (SKNode.position), Core Animation (CALayer.position).

swift
// CGPoint — munka koordinátákkal pontokban
import UIKit

// Pont létrehozása
let point = CGPoint(x: 100.0, y: 200.0)
print("Koordináták: \(point.x), \(point.y)")

// Matematikai műveletek
let offset = CGPoint(x: 16.0, y: 8.0)
let translated = CGPoint(
    x: point.x + offset.x,
    y: point.y + offset.y
)

// Pontok közötti távolság
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)
}

// Pont átalakítása pixelekké
extension CGPoint {
    func toPixels(scale: CGFloat) -> CGPoint {
        CGPoint(x: x * scale, y: y * scale)
    }
}

A toPixels metódus a példában a pontok fizikai pixelekké alakítását mutatja be a UIScreen.main.scale segítségével. A UIKit-ben ez az átalakítás automatikusan megtörténik rendereléskor, de a Core Graphics és a Metal használatakor a fejlesztőnek szüksége lehet explicit pixelekké alakításra. Minden animációs számítás, ütközésérzékelés és elrendezés pontokban történik.

UIFont.pointSize és tipográfia

A UIFont.pointSize tulajdonság a betűméretet pontokban adja vissza — ez a tipográfia szabványos mértékegysége iOS-ben, a nyomdászatból örökölve (1 pt = 1/72 hüvelyk). Az Apple a Mac OS első verziói óta pt-t használ a betűtípusokhoz. iOS-ben a betűméret pontokban állítható be a UIFont.systemFont(ofSize:) vagy a SwiftUI Font.system(size:) segítségével.

swift
// Munka a UIFont.pointSize-szal Swift-ben
import UIKit

// Betűtípus létrehozása pt mérettel
let titleFont = UIFont.systemFont(ofSize: 28.0, weight: .bold)
let bodyFont = UIFont.systemFont(ofSize: 17.0)
let captionFont = UIFont.systemFont(ofSize: 12.0)

// pointSize olvasása
print("Cím mérete: \(titleFont.pointSize) pt")

// Dinamikus típus — automatikus skálázás
let scaledFont = UIFontMetrics.default.scaledFont(for: bodyFont)
print("Skálázott: \(scaledFont.pointSize) pt")

// Betűméretek összehasonlítása
func font(from size: CGFloat, weight: UIFont.Weight) -> UIFont {
    UIFont.systemFont(ofSize: size, weight: weight)
}

UIFontMetrics — a betűtípusok dinamikus skálázásának mechanizmusa, amely az iOS 11-ben került bevezetésre. Automatikusan korrigálja a pointSize-ot a felhasználó akadálymentesítési beállításai alapján (Settings > Display & Brightness > Text Size). A UIFontMetrics használata nélkül a betűtípusok nem skálázódnak, ami sérti a WCAG akadálymentesítési követelményeit.

pt vs px: különbségek

A pt és px közötti különbség kritikus az iOS fejlesztés megértéséhez. pt — logikai egység, px — fizikai egység. Egy pont 1, 2 vagy 3 pixelnek felelhet meg a scale factortól függően. A fejlesztő pontokkal dolgozik, a rendszer pixelekké alakítja azokat a raszterizációs fázisban.

Jellemzőptpx
Egység típusaLogikai (eszközfüggetlen)Fizikai (hardver pixel)
Függ a felbontástólNemIgen
Hol használatosUIKit, SwiftUI, Core Graphics, layoutKépek, Metal, nyers puffer
Átváltás1 pt = scale × px (scale 1-től 3-ig)1 px = pt / scale
Példa (iPhone 15 Pro)393 × 852 pt1179 × 2556 px

A kulcsfontosságú következmény: a felület mérete pontokban azonos az összes azonos osztályú eszközön. A 375 pt széles képernyő — ez mind az iPhone SE, mind az iPhone 14 (alapmodell). A különbség csak abban van, hogy hány fizikai pixel fér el ebbe a 375 pt-be. Ez egységes UI-t biztosít minden eszköz kézi adaptációja nélkül.

pt SwiftUI-ben

A SwiftUI-ben a fejlesztő nem explicit módon dolgozik pontokkal — minden méret Dp-n (device-independent points, a pt megfelelője) keresztül van megadva. A SwiftUI automatikusan alkalmazza a scale factort a renderelés során, de hozzáférést biztosít hozzá az environment value displayScale segítségével.

swift
// SwiftUI — munka pontokkal és scale factor-ral
import SwiftUI

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

    var body: some View {
        VStack(spacing: 16) {
            Text("Cím")
                .font(.system(size: 28, weight: .bold))

            Text("Példa fő szövege")
                .font(.body)

            HStack {
                Text("Scale factor:")
                    .font(.caption)
                Text("\(displayScale, specifier: "%.1f")")
                    .font(.caption.weight(.bold))
            }
        }
        .padding(20)
        .frame(width: 300)
    }
}

A SwiftUI elvonatkoztatja a pt-t a keretrendszer szintjén. A .font(.body) automatikusan használja a Dynamic Type-ot — a betűméret a felhasználó beállításaihoz igazodik. A SwiftUI nem teszi lehetővé a betűméret pixelekben történő beállítását — csak a Font és a tipográfiai rendszeren keresztül. Ez garantálja a felület akadálymentesítését a fejlesztő további erőfeszítése nélkül.

Gyakran Ismételt Kérdések

Mi a különbség a pt és px között?

pt — logikai iOS pont, független a képernyő felbontásától. px — a kijelző fizikai pixele. Egy pont az iPhone 15 Pro-n három pixelnek (@3x), az iPad Pro-n két pixelnek (@2x) felel meg. A fejlesztő mindig pontokkal dolgozik.

Hogyan tudom meg az eszköz scale factor-át?

UIKit-ben: UIScreen.main.scale. SwiftUI-ben: @Environment(\.displayScale). Tipikus értékek: 1.0 (@1x), 2.0 (@2x), 3.0 (@3x). Az iPhone 15 Pro Max esetén az érték 3.0.

Milyen betűméretet használjak a body szöveghez?

Az Apple 17 pt-t ajánl a fő szöveghez (UIFontTextStyle.body). Címekhez — 28–34 pt. Feliratokhoz — 12–13 pt. A Dynamic Type stílusok automatikusan skálázódnak a felhasználó akadálymentesítési beállításaihoz.

Mi az a Dynamic Type iOS-ben?

Dynamic Type — a betűtípusok automatikus skálázási rendszere iOS-ben, amely az iOS 7-ben került bevezetésre. Lehetővé teszi a szöveg számára, hogy alkalmazkodjon a rendszer betűméret-beállításaihoz (Text Size) és az akadálymentesítési paraméterekhez (Bold Text, Larger Text). A UIFontMetrics vagy a SwiftUI Font stílusok segítségével valósítható meg.

Kell @1x eszközöket létrehozni iOS-re?

Nem. A modern Apple eszközök Retina kijelzőt használnak @2x vagy @3x felbontással. A @1x képek csak a Retina nélküli iPad-del (iPad 2, iPad mini 1st gen) való kompatibilitáshoz szükségesek. Az iOS 13-tól kezdve minden eszköz legalább @2x-et támogat.

Összefoglaló

  • pt — logikai iOS egység, amely elvonatkoztatja a felületet a fizikai felbontástól és scale factortól
  • @2x és @3x — skálázási tényezők Retina kijelzőkhöz, meghatározzák a pontonkénti pixelek számát
  • CGPoint — struktúra koordinátákhoz pontokban, minden pozícionálási művelet alapja a UIKit-ben
  • UIFont.pointSize — betűméret pontokban Dynamic Type támogatással a UIFontMetrics segítségével
  • SwiftUI teljesen elvonatkoztatja a pt-t, a Font és Dynamic Type használatával automatikus adaptációhoz
  • Eszközök iOS-hez @2x és @3x formátumban kell szállítani, @1x nem szükséges modern eszközökhöz
  • Dynamic Type — kötelező akadálymentesítési mechanizmus, amely automatikusan skálázza a betűtípusokat

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is