pt — bu nədir, Points və iOS-da miqyaslama

Müəllif: IT Sectr Dərc olunub: 2026-02-25 Oxuma vaxtı: 8 dəq

pt — points, iOS və macOS-da interfeysi fiziki ekran rezolyusiyasından abstraksiya edən məntiqi ölçü vahidi. Bir point Retinasız ekranda (@1x) bir pikselə, Retina (@2x, @3x) ekranlarda isə iki və ya üç pikselə uyğun gəlir. Məqalə pt-nin iş prinsipini, müxtəlif ekranlarda miqyaslamanı, CGPoint və UIFont.pointSize istifadəsini izah edir.

Əsas Məlumat

  • pt — fiziki ekran rezolyusiyasından asılı olmayan iOS məntiqi nöqtəsi
  • @1x, @2x, @3x — bir nöqtəyə neçə piksel düşdüyünü təyin edən miqyas əmsalı
  • CGPoint — pt-də koordinatlar üçün struktur, bütün mövqeləşdirmə əməliyyatlarının əsası
  • UIFont.pointSize — şrift ölçüsü nöqtələrdə, həmişə pt ilə qaytarılır
  • Ekrandan məsafə: iPhone 15 Pro — 460 PPI piksel sıxlığında 1 pt = 3 px

iOS-da pt nədir?

pt (point) — iOS-da proqramçıya interfeysi displeyin fiziki rezolyusiyasından asılı olmayan abstrakt koordinatlarda təsvir etməyə imkan verən məntiqi ölçü vahididir. Apple 2010-cu ildə iPhone 4 və Retina displeyin çıxması ilə point anlayışını təqdim etdi. Retinaya qədər proqramçılar birbaşa piksellərdən istifadə edirdilər — bir UI piksel bir fiziki pikselə bərabər idi.

iOS koordinat sistemi nöqtələr üzərində qurulub: (0,0) nöqtəsi ekranın yuxarı sol küncündədir, X oxu sağa, Y oxu isə aşağıya yönəlmişdir. Nöqtələrdə ekran ölçüsü hər cihaz sinfi üçün sabit qalır: iPhone SE — 375×667 pt, iPhone 15 Pro — 393×852 pt, iPad — 768×1024 pt (portret), 1024×768 pt (landşaft). Fiziki rezolyusiya isə 1179×2556 px (iPhone 15 Pro) ola bilər — lakin proqramçı nöqtələrlə işləyir.

Apple Human Interface Guidelines-ə görə, nöqtələr UIKit-in fundamental abstraksiyasıdır. Bütün freymvorklar — UIKit, SwiftUI, Core Graphics, SpriteKit — nöqtələrlə işləyir. Piksellərə konvertasiya UIScreen.nativeScale vasitəsilə render mərhələsində avtomatik baş verir.

Miqyas əmsalları: @1x, @2x, @3x

Miqyas əmsalı (scale factor) bir məntiqi nöqtəyə neçə fiziki pikselin uyğun gəldiyini müəyyən edir. Apple üç səviyyədən istifadə edir: @1x — 1 pt = 1 px (Retinasız iPad mini, köhnə modellər), @2x — 1 pt = 2 px (2020-ci ilə qədər iPhone-ların çoxu, iPad Retina), @3x — 1 pt = 3 px (iPhone X və daha yeniləri, o cümlədən iPhone 15 Pro).

Cihazpt ilə ölçüpx ilə ölçüSkala
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

Scale factor dəyəri UIScreen.main.scale (UIKit üçün) və @Environment(\.displayScale) (SwiftUI üçün) vasitəsilə əldə edilir. Aktivlərin yüklənməsi zamanı istifadə olunur: sistem Assets.xcassets-dən @2x və ya @3x şəkilçisi olan şəkli avtomatik seçir. Proqramçı Retina cihazlarında @1x şəkillərini yükləməməlidir — bu performansı və keyfiyyəti aşağı salır.

CGPoint və nöqtələrdə koordinatlar

CGPoint strukturu — iOS və macOS-da koordinatları təmsil etmək üçün əsas tipdir. İki sahəsi var: x (CGFloat) və y (CGFloat), qiymətlər nöqtələrlə verilir. CGPoint bütün Apple freymvorklarında istifadə olunur: UIKit (frame.origin), Core Graphics (CGContext), SpriteKit (SKNode.position), Core Animation (CALayer.position).

swift
// CGPoint — nöqtələrdə koordinatlarla iş
import UIKit

// Nöqtənin yaradılması
let point = CGPoint(x: 100.0, y: 200.0)
print("Koordinatlar: \(point.x), \(point.y)")

// Riyazi əməliyyatlar
let offset = CGPoint(x: 16.0, y: 8.0)
let translated = CGPoint(
    x: point.x + offset.x,
    y: point.y + offset.y
)

// Nöqtələr arası məsafə
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)
}

// Nöqtənin piksellərə çevrilməsi
extension CGPoint {
    func toPixels(scale: CGFloat) -> CGPoint {
        CGPoint(x: x * scale, y: y * scale)
    }
}

Nümunədəki toPixels metodu nöqtələrin UIScreen.main.scale vasitəsilə fiziki piksellərə konvertasiyasını göstərir. UIKit-də bu konvertasiya render zamanı avtomatik baş verir, lakin Core Graphics və Metal ilə işləyərkən proqramçıya piksellərə açıq şəkildə çevirmə lazım ola bilər. Bütün animasiya hesablamaları, toqquşma aşkarlama və layout nöqtələrlə yerinə yetirilir.

UIFont.pointSize və tipoqrafika

UIFont.pointSize xüsusiyyəti şrift ölçüsünü nöqtələrlə qaytarır — bu iOS-da tipoqrafikanın standart vahididir, poliqrafiyadan miras qalmışdır (1 pt = 1/72 düym). Apple Mac OS-in ilk versiyalarından şriftlər üçün pt-dən istifadə edir. iOS-da şrift ölçüsü UIFont.systemFont(ofSize:) və ya SwiftUI Font.system(size:) vasitəsilə nöqtələrlə təyin edilir.

swift
// Swift-də UIFont.pointSize ilə iş
import UIKit

// pt ilə şriftin yaradılması
let titleFont = UIFont.systemFont(ofSize: 28.0, weight: .bold)
let bodyFont = UIFont.systemFont(ofSize: 17.0)
let captionFont = UIFont.systemFont(ofSize: 12.0)

// pointSize-in oxunması
print("Başlıq ölçüsü: \(titleFont.pointSize) pt")

// Dinamik tip — avtomatik miqyaslama
let scaledFont = UIFontMetrics.default.scaledFont(for: bodyFont)
print("Miqyaslanmış: \(scaledFont.pointSize) pt")

// Şrift ölçülərinin müqayisəsi
func font(from size: CGFloat, weight: UIFont.Weight) -> UIFont {
    UIFont.systemFont(ofSize: size, weight: weight)
}

UIFontMetrics — iOS 11-də əlavə edilmiş dinamik şrift miqyaslama mexanizmidir. İstifadəçinin əlçatanlıq parametrlərindən (Settings > Display & Brightness > Text Size) asılı olaraq pointSize-i avtomatik korrektə edir. UIFontMetrics istifadə edilmədən şriftlər miqyaslanmır, bu da WCAG əlçatanlıq tələblərini pozur.

pt vs px: fərqlər

ptpx arasındakı fərq iOS inkişafını anlamaq üçün kritikdir. pt — məntiqi vahid, px — fiziki vahid. Bir nöqtə scale factor-dan asılı olaraq 1, 2 və ya 3 pikselə uyğun ola bilər. Proqramçı nöqtələrlə işləyir, sistem rasterizasiya mərhələsində onları piksellərə çevirir.

Xüsusiyyətptpx
Vahid növüMəntiqi (device-independent)Fiziki (hardware pixel)
Rezolyusiyadan asılılıqXeyrBəli
Harada istifadə olunurUIKit, SwiftUI, Core Graphics, layoutŞəkillər, Metal, raw buffer
Konvertasiya1 pt = scale × px (scale 1-dən 3-ə)1 px = pt / scale
Nümunə (iPhone 15 Pro)393 × 852 pt1179 × 2556 px

Əsas nəticə: eyni sinif bütün cihazlarda interfeysin nöqtələrdə ölçüsü eynidir. 375 pt genişliyində ekran — həm iPhone SE, həm də iPhone 14 (baza modeli) üçün belədir. Fərq yalnız bu 375 pt-ə neçə fiziki pikselin sığmasındadır. Bu, hər cihaz üçün əl ilə adaptasiya olmadan vahid UI təmin edir.

SwiftUI-də pt

SwiftUI-də proqramçı açıq şəkildə nöqtələrlə işləmir — bütün ölçülər Dp (device-independent points, pt-nin ekvivalenti) vasitəsilə verilir. SwiftUI render zamanı avtomatik scale factor tətbiq edir, lakin ona environment value displayScale vasitəsilə giriş imkanı verir.

swift
// SwiftUI — nöqtələr və scale factor ilə iş
import SwiftUI

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

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

            Text("Nümunənin əsas mətni")
                .font(.body)

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

SwiftUI pt-ni freymvork səviyyəsində abstraksiya edir. .font(.body) avtomatik Dynamic Type istifadə edir — şrift ölçüsü istifadəçinin parametrlərinə uyğunlaşır. SwiftUI şrift ölçüsünü piksellərdə təyin etməyə imkan vermir — yalnız Font və tipoqrafika sistemi vasitəsilə. Bu, proqramçının əlavə səyi olmadan interfeysin əlçatanlığını təmin edir.

Tez-tez verilən suallar

pt və px arasında nə fərq var?

pt — iOS məntiqi nöqtəsi, ekran rezolyusiyasından asılı deyil. px — displeyin fiziki pikseli. iPhone 15 Pro-da bir nöqtə üç pikselə (@3x), iPad Pro-da isə iki pikselə (@2x) bərabərdir. Proqramçı həmişə nöqtələrlə işləyir.

Cihazın scale factor-nı necə öyrənmək olar?

UIKit-də: UIScreen.main.scale. SwiftUI-də: @Environment(\.displayScale). Tipik dəyərlər: 1.0 (@1x), 2.0 (@2x), 3.0 (@3x). iPhone 15 Pro Max-də dəyər 3.0-dır.

Body text üçün hansı şrift ölçüsündən istifadə etməli?

Apple əsas mətn üçün 17 pt tövsiyə edir (UIFontTextStyle.body). Başlıqlar üçün — 28–34 pt. İmzalar üçün — 12–13 pt. Dynamic Type stilləri istifadəçinin əlçatanlıq parametrlərinə avtomatik uyğunlaşır.

iOS-da Dynamic Type nədir?

Dynamic Type — iOS 7-də təqdim edilmiş avtomatik şrift miqyaslama sistemidir. Mətnin sistem şrift ölçüsü (Text Size) və əlçatanlıq parametrlərinə (Bold Text, Larger Text) uyğunlaşmasına imkan verir. UIFontMetrics və ya SwiftUI Font stilləri vasitəsilə həyata keçirilir.

iOS üçün @1x aktivləri yaratmaq lazımdırmı?

Xeyr. Müasir Apple cihazları @2x və ya @3x Retina displeylərdən istifadə edir. @1x şəkillər yalnız Retinasız iPad (iPad 2, iPad mini 1st gen) ilə uyğunluq üçün lazımdır. iOS 13-dən etibarən bütün cihazlar ən azı @2x dəstəkləyir.

Nəticələr

  • pt — interfeysi fiziki rezolyusiyadan və scale factor-dan abstraksiya edən iOS məntiqi vahidi
  • @2x və @3x — Retina displeylər üçün nöqtəyə düşən piksel sayını təyin edən miqyas əmsalları
  • CGPoint — nöqtələrdə koordinatlar üçün struktur, UIKit-də bütün mövqeləşdirmə əməliyyatlarının əsası
  • UIFont.pointSize — UIFontMetrics vasitəsilə Dynamic Type dəstəyi ilə nöqtələrdə şrift ölçüsü
  • SwiftUI avtomatik adaptasiya üçün Font və Dynamic Type istifadə edərək pt-ni tam abstraksiya edir
  • Aktivlər iOS üçün @2x və @3x formatında təqdim edilməlidir, @1x müasir cihazlar üçün tələb olunmur
  • Dynamic Type — istifadəçi üçün şriftləri avtomatik miqyaslayan məcburi əlçatanlıq mexanizmi

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun