iPadOS es el sistema operativo de Apple para iPad, separado de iOS en 2019. El desarrollo para iPad tiene en cuenta capacidades únicas: multitarea con Split View y Stage Manager, entrada de Apple Pencil de baja latencia y Safari de escritorio.
Puntos clave
iPadOS es el sistema operativo de Apple para iPad, lanzado por primera vez en 2019 como una bifurcación de iOS (versión 13). Antes de esto, iPad usaba el mismo iOS que iPhone. La separación de iPadOS permitió a Apple introducir funciones específicas para la pantalla grande: multitarea, Safari de escritorio, Drag & Drop y soporte para monitores externos.
iPadOS mantiene compatibilidad total con aplicaciones iOS: cualquier app de iPhone se ejecuta en iPad en modo de escalado. Sin embargo, una experiencia de usuario de calidad requiere adaptación: usar Size Classes, UISplitViewController y soporte para atajos de teclado. Según Apple (WWDC 2025), el 80% del tiempo en iPad los usuarios pasan en versiones optimizadas para tabletas, no en versiones escaladas.
iPadOS 13 (2019) introdujo Slide Over y Split View. iPadOS 14 (2020) añadió Apple Pencil Scribble e interfaz compacta. iPadOS 15 (2021) introdujo Quick Note y mejoras en multitarea. iPadOS 16 (2022) trajo Stage Manager y soporte para monitores externos. iPadOS 17 (2023) añadió widgets interactivos y personalización de Lock Screen.
| Versión iPadOS | Año | Innovación clave |
|---|---|---|
| iPadOS 13 | 2019 | Slide Over, Split View, Safari de escritorio |
| iPadOS 14 | 2020 | Scribble para Apple Pencil, llamadas compactas |
| iPadOS 15 | 2021 | Quick Note, gestor de multitarea mejorado |
| iPadOS 16 | 2022 | Stage Manager, monitor externo 6K |
| iPadOS 17 | 2023 | Widgets interactivos, Lock Screen |
| iPadOS 18 | 2024 | Calculadora Math Notes, Smart Script |
iPadOS se basa en el mismo kernel XNU y Darwin que iOS, pero usa un shell UIKit modificado adaptado para múltiples ventanas y tamaños de pantalla arbitrarios. La diferencia arquitectónica clave es el soporte de UIScene, introducido en iOS 13.
En iPadOS, cada ventana (incluidas las de Split View) es una UISceneSession separada con su propio ciclo de vida. A diferencia de iPhone, donde una app tiene una sola UIWindowScene, en iPad una app puede tener múltiples UIScene (varias ventanas, Slide Over, Stage Manager). SceneDelegate gestiona el estado de cada ventana de forma independiente.
import UIKit
import SwiftUI
/// SceneDelegate para soporte de múltiples ventanas en iPadOS
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
var splitVC: UISplitViewController?
func scene(_ scene: UIScene,
willConnectTo session: UISceneSession,
options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = (scene as? UIWindowScene) else { return }
// Creando UISplitViewController para navegación de tableta
let splitVC = UISplitViewController(style: .tripleColumn)
splitVC.primaryBackgroundStyle = .sidebar
let sidebar = SidebarViewController()
let primary = PrimaryViewController()
let detail = DetailViewController()
splitVC.viewControllers = [sidebar, primary, detail]
let window = UIWindow(windowScene: windowScene)
window.rootViewController = splitVC
window.makeKeyAndVisible()
self.window = window
}
// Adaptación al cambiar el tamaño de ventana (Split View)
func windowScene(_ windowScene: UIWindowScene,
didUpdate previousCoordinateSpace: UICoordinateSpace,
interfaceOrientation previousOrientation: UIInterfaceOrientation) {
let isMultitasking = windowScene.traitCollection.horizontalSizeClass == .compact
print("iPadOS multitasking mode: \(isMultitasking ? "compact" : "regular")")
}
}UISplitViewController con estilo .tripleColumn muestra tres columnas simultáneamente: sidebar (navegación), primary (lista) y detail (contenido). Al pasar a modo compacto (Split View con otra app), UIKit colapsa automáticamente las columnas en una pila de navegación. El desarrollador no gestiona este comportamiento manualmente — UIKit adapta el diseño a través de traitCollection.
iPadOS ofrece: soporte para almacenamiento externo mediante Files (USB-C/Thunderbolt), modo terminal de Safari con inspección de elementos, atajos de teclado mediante UIKeyCommand, gestor de descargas del sistema, Drag & Drop entre aplicaciones y Picture in Picture con ventana redimensionable.
Multitarea es una característica clave de iPadOS que la distingue fundamentalmente de iOS. El usuario puede trabajar simultáneamente con varias aplicaciones en una misma pantalla. El desarrollador debe garantizar que la app funcione correctamente en cualquier modo multitarea.
Split View divide la pantalla del iPad entre dos aplicaciones en una proporción 50/50 o 33/67. Cada aplicación recibe su propia UISceneSession con su propia memoria y ciclo de vida. Cuando el ancho de pantalla es inferior a 600 puntos, UIKit fuerza a la app a un tamaño horizontal compacto. La aplicación debe manejar este cambio correctamente.
Slide Over es una ventana flotante sobre la aplicación activa (320 puntos de ancho). La aplicación en Slide Over pasa a un tamaño horizontal compacto (.compact). Es importante optimizar la interfaz para una pantalla estrecha. En Slide Over, la app se puede invocar deslizando desde el borde derecho o mediante el dock. El usuario puede arrastrar Slide Over a Split View o cerrarlo deslizando a la derecha.
Stage Manager (iPadOS 16+, M1 y posteriores) es un gestor de ventanas que permite crear ventanas superpuestas de tamaños arbitrarios. Se admiten hasta 4 ventanas en la pantalla del iPad y hasta 4 en un monitor externo (8 en total). Las aplicaciones reciben el evento UISceneWillConnectNotification para cada nueva ventana. Stage Manager cambia las reglas del ciclo de vida: una ventana en segundo plano no se congela, sino que continúa funcionando con recursos limitados.
| Modo | N.º de ventanas | Tamaño de ventana | Size Class |
|---|---|---|---|
| Pantalla completa | 1 | 100% de la pantalla | Regular |
| Split View 50/50 | 2 | 50% de la pantalla | Regular (iPad Pro 12.9) o Compact |
| Split View 33/67 | 2 | 33% / 67% | Compact para 33% |
| Slide Over | 1 + flotante | 320 pt | Compact |
| Stage Manager | 1–4 | Arbitrario | Depende del tamaño |
Apple Pencil es el lápiz activo de Apple con soporte de inclinación, presión y detección hover (iPad Pro M2+). La latencia entre el movimiento del lápiz y la visualización de la tinta es de 9–20 ms según el modelo. PencilKit es el framework principal para integrar dibujo en una aplicación.
PKCanvasView proporciona una superficie de dibujo lista para usar con soporte para tinta, lápiz, marcador y borrador. PKToolPicker es el panel de selección de herramientas. El desarrollador no necesita implementar el renderizado de trazos — PencilKit lo hace por hardware con shaders Metal. Están disponibles la personalización de color, grosor y opacidad del lápiz.
import PencilKit
import UIKit
class DrawingViewController: UIViewController {
private lazy var canvasView: PKCanvasView = {
let canvas = PKCanvasView()
canvas.tool = PKInkingTool(.pen, color: .black, width: 5)
canvas.delegate = self
canvas.drawingPolicy = .anyInput
canvas.backgroundColor = .white
return canvas
}()
private lazy var toolPicker: PKToolPicker = {
let picker = PKToolPicker()
picker.addObserver(canvasView)
picker.setVisible(true, forFirstResponder: canvasView)
return picker
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(canvasView)
canvasView.frame = view.bounds
canvasView.becomeFirstResponder()
toolPicker.addObserver(canvasView)
}
// Guardando dibujo en PKDrawing (formato binario)
func saveDrawing() {
let drawingData = canvasView.drawing.dataRepresentation()
let url = FileManager.default.urls(
for: .documentDirectory, in: .userDomainMask
)[0].appendingPathComponent("drawing.drawing")
try? drawingData.write(to: url)
}
}
extension DrawingViewController: PKCanvasViewDelegate {
func canvasViewDrawingDidChange(_ canvasView: PKCanvasView) {
print("Canvas changed: \(canvasView.drawing.strokes.count) strokes")
}
}PKCanvasView con drawingPolicy .anyInput acepta tanto Apple Pencil como el dedo. PKToolPicker ofrece al usuario la selección de herramientas sin necesidad de escribir una interfaz personalizada. PKDrawing se almacena en formato binario con alta compresión — una hora de dibujo ocupa unos 5–10 MB.
Scribble (iPadOS 14+) permite escribir a mano en cualquier UITextField y UITextView. El sistema reconoce la escritura a mano en el dispositivo usando Neural Engine. El modelo ML funciona con alfabeto latino y cirílico. En iOS 17+, Scribble admite autocorrección y predicción de la siguiente palabra. El desarrollador no necesita añadir código — Scribble funciona automáticamente con cualquier campo de entrada.
A partir de iPadOS 17.4 y Apple Pencil Pro, los desarrolladores obtienen eventos hover cuando el lápiz se acerca a la pantalla (hasta 12 mm). El evento contiene posición, fuerza y azimut. Aplicaciones: vista previa del punto de contacto del pincel en apps de dibujo, vista previa de herramienta, retroalimentación visual antes del contacto.
Interfaz adaptativa es un requisito obligatorio para las aplicaciones de iPad. iPad funciona en diferentes tamaños de pantalla (8.3"–13") y modos multitarea. UIKit proporciona Size Classes (horizontal: .regular/.compact, vertical: .regular/.compact) y UISplitViewController para adaptación automática.
Size Classes son una abstracción que define el espacio disponible. En iPad en modo pantalla completa, ambos ejes son .regular. En Split View (50%), la clase horizontal puede volverse .compact en iPad mini o iPad Air. Todos los diseños populares construidos con Auto Layout y UICollectionViewCompositionalLayout se adaptan automáticamente. La adaptación personalizada se realiza sobrescribiendo traitCollectionDidChange.
import SwiftUI
/// Layout adaptativo para iPad usando Size Classes
struct AdaptiveContentView: View {
@Environment(\.horizontalSizeClass) private var horizontalSizeClass
@Environment(\.verticalSizeClass) private var verticalSizeClass
var body: some View {
if horizontalSizeClass == .regular && verticalSizeClass == .regular {
// Modo tableta: sidebar + content
NavigationSplitView {
SidebarView()
} detail: {
ContentGridView()
}
} else {
// Modo compacto: navegación en pila
NavigationStack {
ContentGridView()
}
}
}
}
/// Ejemplo de cuadrícula adaptativa: 3 columnas en iPad, 2 en iPhone
struct ContentGridView: View {
@Environment(\.horizontalSizeClass) private var horizontalSizeClass
private var columns: [GridItem] {
let count = horizontalSizeClass == .regular ? 3 : 2
return Array(repeating: GridItem(.flexible(), spacing: 16), count: count)
}
var body: some View {
ScrollView {
LazyVGrid(columns: columns, spacing: 16) {
ForEach(items) { item in
ItemCard(item: item)
}
}
.padding()
}
}
}En el ejemplo, NavigationSplitView se usa solo cuando horizontalSizeClass == .regular (iPad pantalla completa). NavigationStack se usa en modo compacto. El número de columnas de la cuadrícula (3 vs 2) también cambia según Size Classes. Todo se actualiza automáticamente al cambiar el modo multitarea.
UIKit proporciona UISplitViewController con tres estilos: .doubleColumn (sidebar + detail), .tripleColumn (sidebar + primary + detail) y .single. En iPadOS 16+, splitViewController cambia automáticamente entre estilos al cambiar size class. El desarrollador establece viewControllers para cada columna, UIKit gestiona la visibilidad.
iPadOS SDK incluye todos los frameworks de iOS, así como API disponibles solo en iPad. A continuación se presentan las capacidades clave específicas de iPad.
iPadOS admite Drag & Drop entre aplicaciones y dentro de una aplicación. UIDragInteraction y UIDropInteraction permiten arrastrar texto, imágenes, archivos y objetos personalizados. Drag & Drop funciona simultáneamente con Multi-Touch: el usuario puede arrastrar varios elementos con diferentes dedos. En SwiftUI se usan los modificadores .onDrag y .onDrop.
Al conectar un teclado (Magic Keyboard, Smart Keyboard), UIKeyCommand permite añadir atajos. En iPadOS 17+, los atajos de teclado se muestran al mantener pulsado Cmd. Apple recomienda admitir combinaciones estándar: ⌘C (copiar), ⌘V (pegar), ⌘F (buscar), ⌘N (nuevo documento).
iPadOS 17+ admite monitores externos con resolución nativa de hasta 6K (Pro Display XDR). Una aplicación puede mostrar contenido en una pantalla externa a través de UIWindowScene con un identificador de sesión separado. Stage Manager permite colocar hasta 4 ventanas en un monitor externo con dimensiones redimensionables.
| API | Propósito | Disponible en iOS |
|---|---|---|
| UISplitViewController | Navegación multicolumna | Sí |
| PencilKit | Dibujo con Apple Pencil | No |
| UIDragInteraction | Drag & Drop | Sí (solo en la app) |
| UIKeyCommand | Atajos de teclado | Sí (solo con teclado externo) |
| UIScene | Modo multiventana | Sí (solo iPad) |
| UIPencilInteraction | Doble toque Apple Pencil | No |
| PDFKit | Visualización y anotación de PDF | Sí |
El desarrollo para iPadOS requiere un enfoque especial en UI/UX, rendimiento y pruebas. Los errores perdonables en iPhone se vuelven críticos en iPad debido a la pantalla más grande y la multitarea.
iPad usa chips de la serie M (M1, M2, M4) con memoria unificada de hasta 16 GB. A pesar del potente hardware, una aplicación en Split View o Slide Over comparte recursos con otra aplicación. La presión de memoria es mayor que en iPhone. Usa compresión de imágenes, carga diferida de colecciones y perfilado mediante Instruments Allocations. iPad Pro M4 con 16 GB permite ejecutar aplicaciones de nivel de escritorio (Final Cut Pro, Logic Pro).
La mayoría de los usuarios de iPad usan un teclado externo. La interfaz debe ser completamente navegable con teclado: Tab para navegar por campos, Space para activar un elemento seleccionado, Enter para confirmar. Añade soporte para Full Keyboard Access — un ajuste del sistema que permite controlar cualquier elemento de la interfaz con el teclado.
El simulador de iPad no reproduce completamente el comportamiento multitarea. Prueba en un dispositivo real en diferentes modos: Split View con una app pesada (Safari con 20 pestañas), Stage Manager con 4 ventanas, Slide Over con cambio rápido de aplicaciones. Verifica el escenario: el usuario abre la app desde Slide Over, la arrastra a Split View, cambia el tamaño, la cierra — la app no debe bloquearse.
// Comprobando el modo multitarea actual en iPadOS
- (void)checkMultitaskingMode:(UIWindowScene *)scene {
if (scene.traitCollection.userInterfaceIdiom != UIUserInterfaceIdiomPad) {
return;
}
BOOL isFullScreen = (scene.traitCollection.horizontalSizeClass == UIUserInterfaceSizeClassRegular &&
scene.traitCollection.verticalSizeClass == UIUserInterfaceSizeClassRegular);
BOOL isSlideOver = (CGRectGetWidth(scene.coordinateSpace.bounds) == 320.0);
if (scene.windows.first?.windowScene?.activationConditions.canBecomeFocused == YES) {
NSLog(@"Stage Manager activo");
}
if (isSlideOver) {
NSLog(@"Modo Slide Over");
} else if (isFullScreen) {
NSLog(@"Modo pantalla completa");
} else {
NSLog(@"Modo Split View");
}
}Preguntas frecuentes
iPadOS tiene multitarea ampliada (Split View, Slide Over, Stage Manager), soporte para Apple Pencil con detección hover, Safari de escritorio con gestor de descargas, monitores externos con resolución nativa y el sistema de archivos Files con acceso a unidades externas mediante USB-C.
Split View se admite automáticamente si la aplicación usa UISplitViewController. La app debe manejar correctamente los cambios de size class: al pasar a modo compacto, usar UINavigationController para la pila de pantallas. Para rechazar explícitamente Split View, indica UIRequiresFullScreen = YES en Info.plist.
Usa PencilKit: PKCanvasView para la superficie de dibujo y PKToolPicker para la selección de herramientas. Para manejo personalizado de entrada del lápiz — UIEvent con tipo .hover y UIPencilInteraction para doble toque. La latencia de Apple Pencil Pro es de 9 ms, la generación anterior — 20 ms.
iPad mini 8,3" (2266×1488), iPad Air 10,9" (2360×1640), iPad Pro 11" (2388×1668), iPad Pro 13" M4 (2752×2064). Usa Size Classes y Auto Layout para la adaptación. Monitores externos hasta 6K mediante Thunderbolt. Stage Manager admite hasta 8 ventanas (4 en iPad + 4 en monitor externo).
iPadOS 17+ admite monitores externos mediante USB-C/Thunderbolt con resolución nativa de hasta 6K. Una aplicación puede mostrar contenido en un monitor externo a través de un UIWindowScene separado con su propio ciclo de vida. Stage Manager admite hasta 4 ventanas en un monitor externo.
Resumen
Desarrollaremos una aplicación móvil llave en mano
IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.