pt — wat het is, Points en schaling in iOS

Auteur: IT Sectr Gepubliceerd: 2026-02-25 Leestijd: 8 min

pt — punten, logische meeteenheid in iOS en macOS die de interface abstraheert van de fysieke schermresolutie. Één point komt overeen met één pixel op een scherm zonder Retina (@1x) en met twee of drie pixels op Retina (@2x, @3x). Het artikel legt het werkingsprincipe van pt uit, schaling op verschillende schermen, gebruik van CGPoint en UIFont.pointSize.

Belangrijkste

  • pt — logisch iOS-punt, onafhankelijk van de fysieke schermresolutie
  • @1x, @2x, @3x — schaalfactor die bepaalt hoeveel pixels er per punt zijn
  • CGPoint — structuur voor coördinaten in pt, basis van alle positioneringsbewerkingen
  • UIFont.pointSize — lettergrootte in punten, altijd weergegeven in pt
  • Afstand tot scherm: iPhone 15 Pro — 1 pt = 3 px bij pixeldichtheid 460 PPI

Wat is pt in iOS?

pt (point) — logische meeteenheid in iOS waarmee de ontwikkelaar de interface kan beschrijven in abstracte coördinaten, onafhankelijk van de fysieke schermresolutie. Apple introduceerde het concept van points met de lancering van de iPhone 4 en het Retina-scherm in 2010. Vóór Retina gebruikten ontwikkelaars direct pixels — één UI-pixel was gelijk aan één fysieke pixel.

Het iOS-coördinatensysteem is gebouwd op punten: punt (0,0) bevindt zich in de linkerbovenhoek van het scherm, de X-as is naar rechts gericht, de Y-as naar beneden. De schermgrootte in punten blijft constant voor elke apparaatklasse: iPhone SE — 375×667 pt, iPhone 15 Pro — 393×852 pt, iPad — 768×1024 pt (staand), 1024×768 pt (liggend). De fysieke resolutie kan 1179×2556 px zijn (iPhone 15 Pro) — maar de ontwikkelaar werkt met punten.

Volgens de Apple Human Interface Guidelines zijn punten de fundamentele abstractie van UIKit. Alle frameworks — UIKit, SwiftUI, Core Graphics, SpriteKit — werken met punten. Conversie naar pixels gebeurt automatisch tijdens het renderen via UIScreen.nativeScale.

Schaalfactoren: @1x, @2x, @3x

De schaalfactor (scale factor) bepaalt hoeveel fysieke pixels overeenkomen met één logisch punt. Apple gebruikt drie niveaus: @1x — 1 pt = 1 px (iPad mini zonder Retina, oudere modellen), @2x — 1 pt = 2 px (de meeste iPhones tot 2020, iPad Retina), @3x — 1 pt = 3 px (iPhone X en nieuwer, inclusief iPhone 15 Pro).

ApparaatAfmeting in ptAfmeting in pxSchaal
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

De waarde van de schaalfactor is beschikbaar via UIScreen.main.scale (voor UIKit) en @Environment(\.displayScale) (voor SwiftUI). Het wordt gebruikt bij het laden van assets: het systeem selecteert automatisch de afbeelding met het achtervoegsel @2x of @3x uit Assets.xcassets. De ontwikkelaar laadt geen @1x-afbeeldingen op Retina-apparaten — dit vermindert de prestaties en kwaliteit.

CGPoint en coördinaten in punten

De structuur CGPoint — het basistype voor weergave van coördinaten in iOS en macOS. Bevat twee velden: x (CGFloat) en y (CGFloat), waarden worden in punten gegeven. CGPoint wordt gebruikt in alle Apple-frameworks: UIKit (frame.origin), Core Graphics (CGContext), SpriteKit (SKNode.position), Core Animation (CALayer.position).

swift
// CGPoint — werken met coördinaten in punten
import UIKit

// Punt aanmaken
let point = CGPoint(x: 100.0, y: 200.0)
print("Coördinaten: \(point.x), \(point.y)")

// Wiskundige bewerkingen
let offset = CGPoint(x: 16.0, y: 8.0)
let translated = CGPoint(
    x: point.x + offset.x,
    y: point.y + offset.y
)

// Afstand tussen punten
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)
}

// Punt converteren naar pixels
extension CGPoint {
    func toPixels(scale: CGFloat) -> CGPoint {
        CGPoint(x: x * scale, y: y * scale)
    }
}

De methode toPixels in het voorbeeld demonstreert de conversie van punten naar fysieke pixels via UIScreen.main.scale. In UIKit gebeurt deze conversie automatisch tijdens het renderen, maar in Core Graphics en bij het werken met Metal kan de ontwikkelaar een expliciete conversie naar pixels nodig hebben. Alle berekeningen van animaties, botsingsdetectie en layout worden in punten uitgevoerd.

UIFont.pointSize en typografie

De eigenschap UIFont.pointSize retourneert de lettergrootte in punten — dit is de standaard typografie-eenheid in iOS, overgenomen uit de drukkunst (1 pt = 1/72 inch). Apple gebruikt pt voor lettertypen sinds de eerste versies van Mac OS. In iOS wordt de lettergrootte in punten ingesteld via UIFont.systemFont(ofSize:) of via SwiftUI Font.system(size:).

swift
// Werken met UIFont.pointSize in Swift
import UIKit

// Lettertype maken met grootte in pt
let titleFont = UIFont.systemFont(ofSize: 28.0, weight: .bold)
let bodyFont = UIFont.systemFont(ofSize: 17.0)
let captionFont = UIFont.systemFont(ofSize: 12.0)

// pointSize lezen
print("Kopgrootte: \(titleFont.pointSize) pt")

// Dynamisch type — automatisch schalen
let scaledFont = UIFontMetrics.default.scaledFont(for: bodyFont)
print("Geschaald: \(scaledFont.pointSize) pt")

// Lettergroottes vergelijken
func font(from size: CGFloat, weight: UIFont.Weight) -> UIFont {
    UIFont.systemFont(ofSize: size, weight: weight)
}

UIFontMetrics — het mechanisme voor dynamische schaling van lettertypen, toegevoegd in iOS 11. Het corrigeert automatisch de pointSize op basis van de toegankelijkheidsinstellingen van de gebruiker (Settings > Display & Brightness > Text Size). Zonder gebruik van UIFontMetrics worden lettertypen niet geschaald, wat de WCAG-toegankelijkheidseisen schendt.

pt vs px: verschillen

Het verschil tussen pt en px is cruciaal voor het begrijpen van iOS-ontwikkeling. pt — logische eenheid, px — fysieke eenheid. Eén punt kan overeenkomen met 1, 2 of 3 pixels, afhankelijk van de schaalfactor. De ontwikkelaar werkt met punten, het systeem zet ze om in pixels tijdens de rasterisatie.

Kenmerkptpx
Type eenheidLogisch (apparaatonafhankelijk)Fysiek (hardwarepixel)
Afhankelijk van resolutieNeeJa
Waar gebruiktUIKit, SwiftUI, Core Graphics, layoutAfbeeldingen, Metal, raw buffer
Conversie1 pt = scale × px (scale van 1 tot 3)1 px = pt / scale
Voorbeeld (iPhone 15 Pro)393 × 852 pt1179 × 2556 px

Het belangrijkste gevolg: de interfacegrootte in punten is hetzelfde op alle apparaten van dezelfde klasse. Een scherm van 375 pt breed — dat is zowel de iPhone SE als de iPhone 14 (basismodel). Het verschil zit alleen in hoeveel fysieke pixels er in deze 375 pt passen. Dit zorgt voor een uniforme UI zonder handmatige aanpassing per apparaat.

pt in SwiftUI

In SwiftUI werkt de ontwikkelaar niet expliciet met punten — alle afmetingen worden gegeven via Dp (device-independent points, equivalent van pt). SwiftUI past automatisch de schaalfactor toe tijdens het renderen, maar biedt toegang via de environment value displayScale.

swift
// SwiftUI — werken met punten en schaalfactor
import SwiftUI

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

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

            Text("Hoofdtekst van voorbeeld")
                .font(.body)

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

SwiftUI abstraheert pt op frameworkniveau. .font(.body) gebruikt automatisch Dynamic Type — de lettergrootte past zich aan de gebruikersinstellingen aan. SwiftUI staat niet toe de lettergrootte in pixels in te stellen — alleen via Font en het typografiesysteem. Dit garandeert de toegankelijkheid van de interface zonder extra inspanning van de ontwikkelaar.

Veelgestelde vragen

Wat is het verschil tussen pt en px?

pt — logisch iOS-punt, onafhankelijk van de schermresolutie. px — fysieke pixel van het scherm. Eén punt op iPhone 15 Pro is gelijk aan drie pixels (@3x), op iPad Pro aan twee (@2x). De ontwikkelaar werkt altijd met punten.

Hoe kom ik de schaalfactor van het apparaat te weten?

In UIKit: UIScreen.main.scale. In SwiftUI: @Environment(\.displayScale). Typische waarden: 1.0 (@1x), 2.0 (@2x), 3.0 (@3x). Op iPhone 15 Pro Max is de waarde 3.0.

Welke lettergrootte gebruiken voor body text?

Apple beveelt 17 pt aan voor hoofdtekst (UIFontTextStyle.body). Voor koppen — 28–34 pt. Voor bijschriften — 12–13 pt. Dynamic Type-stijlen worden automatisch geschaald naar de toegankelijkheidsinstellingen van de gebruiker.

Wat is Dynamic Type in iOS?

Dynamic Type — het automatische schalingssysteem voor lettertypen in iOS, geïntroduceerd in iOS 7. Het stelt tekst in staat zich aan te passen aan de systeeminstellingen voor lettergrootte (Text Size) en toegankelijkheidsparameters (Bold Text, Larger Text). Het wordt geïmplementeerd via UIFontMetrics of SwiftUI Font-stijlen.

Moet ik @1x-assets maken voor iOS?

Nee. Moderne Apple-apparaten gebruiken Retina-schermen met @2x of @3x. @1x-afbeeldingen zijn alleen nodig voor compatibiliteit met iPad zonder Retina (iPad 2, iPad mini 1st gen). Sinds iOS 13 ondersteunen alle apparaten ten minste @2x.

Samenvatting

  • pt — logische iOS-eenheid die de interface abstraheert van fysieke resolutie en schaalfactor
  • @2x en @3x — schaalfactoren voor Retina-schermen die het aantal pixels per punt bepalen
  • CGPoint — structuur voor coördinaten in punten, basis van alle positioneringsbewerkingen in UIKit
  • UIFont.pointSize — lettergrootte in punten met Dynamic Type-ondersteuning via UIFontMetrics
  • SwiftUI abstraheert pt volledig, met Font en Dynamic Type voor automatische aanpassing
  • Assets voor iOS moeten worden geleverd in @2x en @3x, @1x is niet nodig voor moderne apparaten
  • Dynamic Type — verplicht toegankelijkheidsmechanisme dat lettertypen automatisch schaalt voor de gebruiker

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook