pt — bu nima, Points va iOSda masshtablash

Muallif: IT Sectr Nashr etilgan: 2026-02-25 O'qish vaqti: 8 daq

pt — points, iOS va macOS-da interfeysni jismoniy ekran rezolyutsiyasidan mavhumlashtiradigan mantiqiy o'lchov birligi. Bir point Retinasiz ekranda (@1x) bir pikselga va Retina (@2x, @3x) ekranlarda ikki yoki uch pikselga mos keladi. Maqola pt ishlash prinsipini, turli ekranlarda masshtablashni, CGPoint va UIFont.pointSize dan foydalanishni tushuntiradi.

Asosiy Ma'lumot

  • pt — jismoniy ekran rezolyutsiyasidan mustaqil bo'lgan iOS mantiqiy nuqtasi
  • @1x, @2x, @3x — bir nuqtaga necha piksel to'g'ri kelishini aniqlovchi masshtab koeffitsiyenti
  • CGPoint — pt da koordinatalar uchun struktura, barcha joylashtirish amallarining asosi
  • UIFont.pointSize — shrift o'lchami nuqtalarda, har doim pt da qaytariladi
  • Ekrandan masofa: iPhone 15 Pro — 460 PPI piksel zichligida 1 pt = 3 px

iOS da pt nima?

pt (point) — iOS da dasturchiga interfeysni displeyning jismoniy rezolyutsiyasidan mustaqil bo'lgan mavhum koordinatalarda tasvirlash imkonini beradigan mantiqiy o'lchov birligidir. Apple 2010 yilda iPhone 4 va Retina displeyning chiqishi bilan point tushunchasini taqdim etdi. Retinagacha dasturchilar to'g'ridan-to'g'ri piksellardan foydalanardilar — bir UI piksel bir jismoniy pikselga teng edi.

iOS koordinatalar tizimi nuqtalar asosida qurilgan: (0,0) nuqtasi ekranning yuqori chap burchagida joylashgan, X o'qi o'ngga, Y o'qi pastga yo'naltirilgan. Nuqtalarda ekran o'lchami har bir qurilma sinfi uchun doimiy qoladi: iPhone SE — 375×667 pt, iPhone 15 Pro — 393×852 pt, iPad — 768×1024 pt (portret), 1024×768 pt (peyzaj). Jismoniy rezolyutsiya 1179×2556 px (iPhone 15 Pro) bo'lishi mumkin — ammo dasturchi nuqtalar bilan ishlaydi.

Apple Human Interface Guidelines ga ko'ra, nuqtalar UIKit ning asosiy mavhumlashuvidir. Barcha freymvorklar — UIKit, SwiftUI, Core Graphics, SpriteKit — nuqtalar bilan ishlaydi. Piksellarga konvertatsiya renderlash bosqichida UIScreen.nativeScale orqali avtomatik ravishda sodir bo'ladi.

Masshtab koeffitsiyentlari: @1x, @2x, @3x

Masshtab koeffitsiyenti (scale factor) bir mantiqiy nuqtaga nechta jismoniy piksel to'g'ri kelishini aniqlaydi. Apple uch darajadan foydalanadi: @1x — 1 pt = 1 px (Retinasiz iPad mini, eski modellar), @2x — 1 pt = 2 px (2020 yilgacha bo'lgan aksariyat iPhone'lar, iPad Retina), @3x — 1 pt = 3 px (iPhone X va undan yangilari, jumladan iPhone 15 Pro).

Qurilmapt da o'lchampx da o'lchamMasshtab
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 qiymati UIScreen.main.scale (UIKit uchun) va @Environment(\.displayScale) (SwiftUI uchun) orqali mavjud. Aktivlarni yuklashda ishlatiladi: tizim Assets.xcassets dan @2x yoki @3x qo'shimchasiga ega rasmni avtomatik tanlaydi. Dasturchi Retina qurilmalarida @1x rasmlarini yuklamasligi kerak — bu ishlash va sifatni pasaytiradi.

CGPoint va nuqtalarda koordinatalar

CGPoint strukturasi — iOS va macOS da koordinatalarni ifodalash uchun asosiy turdir. Ikki maydonga ega: x (CGFloat) va y (CGFloat), qiymatlar nuqtalarda beriladi. CGPoint barcha Apple freymvorklarida ishlatiladi: UIKit (frame.origin), Core Graphics (CGContext), SpriteKit (SKNode.position), Core Animation (CALayer.position).

swift
// CGPoint — nuqtalarda koordinatalar bilan ishlash
import UIKit

// Nuqta yaratish
let point = CGPoint(x: 100.0, y: 200.0)
print("Koordinatalar: \(point.x), \(point.y)")

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

// Nuqtalar orasidagi masofa
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)
}

// Nuqtani piksellarga aylantirish
extension CGPoint {
    func toPixels(scale: CGFloat) -> CGPoint {
        CGPoint(x: x * scale, y: y * scale)
    }
}

Misoldagi toPixels metodi nuqtalarni UIScreen.main.scale orqali jismoniy piksellarga konvertatsiya qilishni ko'rsatadi. UIKit da bu konvertatsiya renderlashda avtomatik sodir bo'ladi, ammo Core Graphics va Metal bilan ishlashda dasturchiga piksellarga aniq konvertatsiya kerak bo'lishi mumkin. Barcha animatsiya hisob-kitoblari, to'qnashuvlarni aniqlash va layout nuqtalarda bajariladi.

UIFont.pointSize va tipografika

UIFont.pointSize xususiyati shrift o'lchamini nuqtalarda qaytaradi — bu iOS da tipografikaning standart birligi bo'lib, poligrafiyadan meros bo'lib qolgan (1 pt = 1/72 dyuym). Apple Mac OS ning birinchi versiyalaridanoq shriftlar uchun pt dan foydalanadi. iOS da shrift o'lchami UIFont.systemFont(ofSize:) yoki SwiftUI Font.system(size:) orqali nuqtalarda o'rnatiladi.

swift
// Swift da UIFont.pointSize bilan ishlash
import UIKit

// pt da shrift yaratish
let titleFont = UIFont.systemFont(ofSize: 28.0, weight: .bold)
let bodyFont = UIFont.systemFont(ofSize: 17.0)
let captionFont = UIFont.systemFont(ofSize: 12.0)

// pointSize ni o'qish
print("Sarlavha o'lchami: \(titleFont.pointSize) pt")

// Dinamik tip — avtomatik masshtablash
let scaledFont = UIFontMetrics.default.scaledFont(for: bodyFont)
print("Masshtablangan: \(scaledFont.pointSize) pt")

// Shrift o'lchamlarini solishtirish
func font(from size: CGFloat, weight: UIFont.Weight) -> UIFont {
    UIFont.systemFont(ofSize: size, weight: weight)
}

UIFontMetrics — iOS 11 da qo'shilgan dinamik shrift masshtablash mexanizmi. Foydalanuvchining moslashuvchanlik sozlamalariga (Settings > Display & Brightness > Text Size) qarab pointSize ni avtomatik tuzatadi. UIFontMetrics ishlatilmasa, shriftlar masshtablanmaydi, bu WCAG moslashuvchanlik talablarini buzadi.

pt vs px: farqlari

pt va px o'rtasidagi farq iOS dasturiy ishlanmasini tushunish uchun muhimdir. pt — mantiqiy birlik, px — jismoniy birlik. Bir nuqta scale factor ga qarab 1, 2 yoki 3 pikselga mos kelishi mumkin. Dasturchi nuqtalar bilan ishlaydi, tizim ularni rastrlashtirish bosqichida piksellarga aylantiradi.

Xususiyatptpx
Birlik turiMantiqiy (qurilmadan mustaqil)Jismoniy (hardware pixel)
Rezolyutsiyaga bog'liqYo'qHa
Qayerda ishlatiladiUIKit, SwiftUI, Core Graphics, layoutRasmlar, Metal, raw buffer
Konvertatsiya1 pt = scale × px (scale 1 dan 3 gacha)1 px = pt / scale
Misol (iPhone 15 Pro)393 × 852 pt1179 × 2556 px

Asosiy xulosa: bir sinfdagi barcha qurilmalarda interfeysning nuqtalardagi o'lchami bir xil. 375 pt kenglikdagi ekran — bu ham iPhone SE, ham iPhone 14 (asosiy model). Farq faqat shu 375 pt ga nechta jismoniy piksel sig'ishidadir. Bu har bir qurilma uchun qo'lda moslashtirishsiz bir xil UI ni ta'minlaydi.

SwiftUI da pt

SwiftUI da dasturchi ochiqchasiga nuqtalar bilan ishlamaydi — barcha o'lchamlar Dp (device-independent points, pt ekvivalenti) orqali beriladi. SwiftUI renderlashda avtomatik scale factor qo'llaydi, ammo unga environment value displayScale orqali kirish imkonini beradi.

swift
// SwiftUI — nuqtalar va scale factor bilan ishlash
import SwiftUI

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

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

            Text("Misolning asosiy matni")
                .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 darajasida mavhumlashtiradi. .font(.body) avtomatik ravishda Dynamic Type dan foydalanadi — shrift o'lchami foydalanuvchi sozlamalariga moslashadi. SwiftUI shrift o'lchamini piksellarda o'rnatishga ruxsat bermaydi — faqat Font va tipografika tizimi orqali. Bu dasturchining qo'shimcha harakatisiz interfeysning moslashuvchanligini kafolatlaydi.

Tez-tez beriladigan savollar

pt va px o'rtasidagi farq nima?

pt — iOS mantiqiy nuqtasi, ekran rezolyutsiyasidan mustaqil. px — displeyning jismoniy pikseli. iPhone 15 Pro da bir nuqta uch pikselga (@3x), iPad Pro da ikki pikselga (@2x) teng. Dasturchi har doim nuqtalar bilan ishlaydi.

Qurilmaning scale factor ni qanday bilish mumkin?

UIKit da: UIScreen.main.scale. SwiftUI da: @Environment(\.displayScale). Odatdagi qiymatlar: 1.0 (@1x), 2.0 (@2x), 3.0 (@3x). iPhone 15 Pro Max da qiymat 3.0.

Body text uchun qanday shrift o'lchamidan foydalanish kerak?

Apple asosiy matn uchun 17 pt ni tavsiya qiladi (UIFontTextStyle.body). Sarlavhalar uchun — 28–34 pt. Imzolar uchun — 12–13 pt. Dynamic Type uslublari foydalanuvchining moslashuvchanlik sozlamalariga avtomatik moslashadi.

iOS da Dynamic Type nima?

Dynamic Type — iOS 7 da taqdim etilgan avtomatik shrift masshtablash tizimi. Matnning tizim shrift o'lchami (Text Size) va moslashuvchanlik parametrlariga (Bold Text, Larger Text) moslashishiga imkon beradi. UIFontMetrics yoki SwiftUI Font uslublari orqali amalga oshiriladi.

iOS uchun @1x aktivlar yaratish kerakmi?

Yo'q. Zamonaviy Apple qurilmalari @2x yoki @3x Retina displeylardan foydalanadi. @1x rasmlar faqat Retinasiz iPad (iPad 2, iPad mini 1st gen) bilan moslik uchun kerak. iOS 13 dan boshlab barcha qurilmalar kamida @2x ni qo'llab-quvvatlaydi.

Xulosalar

  • pt — interfeysni jismoniy rezolyutsiya va scale factor dan mavhumlashtiradigan iOS mantiqiy birligi
  • @2x va @3x — Retina displeylar uchun nuqtadagi piksel sonini aniqlovchi masshtab koeffitsiyentlari
  • CGPoint — nuqtalarda koordinatalar uchun struktura, UIKit dagi barcha joylashtirish amallarining asosi
  • UIFont.pointSize — UIFontMetrics orqali Dynamic Type qo'llab-quvvatlashi bilan nuqtalarda shrift o'lchami
  • SwiftUI pt ni to'liq mavhumlashtiradi va avtomatik moslashish uchun Font va Dynamic Type dan foydalanadi
  • Aktivlar iOS uchun @2x va @3x da taqdim etilishi kerak, @1x zamonaviy qurilmalar uchun talab qilinmaydi
  • Dynamic Type — foydalanuvchi uchun shriftlarni avtomatik masshtablaydigan majburiy moslashuvchanlik mexanizmi

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing