iPhone 5 (2012) มีความละเอียด 640×1136 (Aspect Ratio 16:9) ต่างจาก iPhone 4/4S (3:2) ปัจจุบัน Xcode ใช้ Auto Layout และ Size Classes จัดการทุกขนาดได้อัตโนมัติ
บริบททางประวัติศาสตร์
- iPhone 4/4S: 640×960 (3:2)
- iPhone 5/5s/SE(1st): 640×1136 (16:9) - First 4-inch
- iPhone 6/7/8: 750×1334 (4.7")
- iPhone 6+/7+/8+: 1242×2208 (5.5")
- iPhone X/XS/11 Pro: 1125×2436 (5.8")
- iPhone 12/13/14/15 Pro: 1179×2556 (6.1")
วิธีการปัจจุบัน (Auto Layout + Size Classes)
- ใช้ Auto Layout Constraints ไม่ใช่ Frame แบบ Hardcode
- ใช้ Stack Views จัด Layout อัตโนมัติ
- ใช้ Size Classes (Regular/Compact) ปรับ Layout ตามอุปกรณ์
- Test ด้วย View As: ใน Storyboard (iPhone SE, 8, 14 Pro, iPad, etc.)
Launch Screen (สำคัญ)
- ใช้ Launch Screen.storyboard (ไม่ใช่ Launch Images แบบเก่า)
- รองรับทุกขนาดอัตโนมัติด้วย Auto Layout
- หากยังใช้ Launch Images ต้องมี
Default-568h@2x.png(1136×640) สำหรับ iPhone 5
Safe Area (iOS 11+)
// ใช้ Safe Area Layout Guide แทน Superview Edges
view.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
view.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true
Device-Specific Adjustments (หากจำเป็น)
let isSmallScreen = UIScreen.main.bounds.height <= 667 // iPhone 8/SE
let hasNotch = UIApplication.shared.windows.first?.safeAreaInsets.top ?? 0 > 20
if isSmallScreen {
// ปรับ Font Size, Spacing ให้เล็กลง
titleLabel.font = .systemFont(ofSize: 24)
} else {
titleLabel.font = .systemFont(ofSize: 32)
}
สรุป
ไม่ต้อง "Migrate" แบบเดิมๆ แล้ว ใช้ Auto Layout + Size Classes + Safe Area แอปจะทำงานได้ทุกขนาด iPhone/iPad อัตโนมัติ