-
Moderniza tu app desarrollada con UIKit
Descubre las últimas novedades de UIKit. Obtén información sobre cómo actualizar los diseños de tu app para iPhone para que funcionen a la perfección al cambiar de tamaño con la funcionalidad Duplicación del iPhone y en el iPad. Explora las nuevas API para las pestañas y las barras de navegación, descubre cómo preparar tu app para las nuevas capacidades de Apple Intelligence y conoce una habilidad para el agente de programación que prefieras que te ayudará a modernizar tu base de código.
Capítulos
- 0:00 - Introducción
- 0:34 - Adaptabilidad de las apps
- 2:10 - API heredada: ciclo de vida de la app
- 2:51 - API heredada: pantalla principal
- 5:46 - Modo de pantalla completa para juegos
- 6:17 - API heredada: expresión de la interfaz de usuario
- 7:55 - Protocolos Body de UIView para movimiento y ubicación
- 8:19 - Prueba tu app para iPhone redimensionable
- 9:18 - Barras de pestañas y barras laterales
- 10:52 - Barras de navegación
- 12:37 - Menús
- 13:01 - Integración con Apple Intelligence
- 14:07 - Programación agéntica
- 15:32 - Próximos pasos
Recursos
- TN3208: Preparing your app’s launch screen to meet App Store requirements
- TN3210: Optimizing your app for iPhone Mirroring
- Make your UIKit app more flexible
- Adapting your app when traits change
- Transitioning to the UIKit scene-based life cycle
- Automatic trait tracking
- Human Interface Guidelines: Menus
Videos relacionados
WWDC26
- Aprovecha al máximo Device Hub
- Explora las funcionalidades avanzadas de App Intents para Siri y Apple Intelligence
WWDC25
WWDC24
-
Buscar este video…
-
-
3:24 - Use local screen references
// Use local screen references // Access the correct screen through a windowScene let screen = window?.windowScene?.screen // Pass in local screen references func generateThumbnail(_ image: UIImage, screen: UIScreen) -> UIImage { // existing code, replacing main screen with local screen reference // ... } -
3:49 - Replace screen scale with displayScale
// Replace the screen's scale with trait collection's displayScale override func layoutSubviews() { super.layoutSubviews() // layoutSubviews will be called again automatically when displayScale changes let displayScale = traitCollection.displayScale // ... } -
4:36 - Register for trait changes
// Manually register for trait changes let displayScaleTrait: [UITrait] = [UITraitDisplayScale.self] registerForTraitChanges(displayScaleTrait) { (view: GalleryView, previousTraitCollection: UITraitCollection) in view.cache.invalidate() } -
5:19 - Monitor effective geometry changes
// UIWindowSceneDelegate func windowScene( _ windowScene: UIWindowScene, didUpdateEffectiveGeometry previousEffectiveGeometry: UIWindowScene.Geometry ) { let geometry = windowScene.effectiveGeometry let availableSpace = geometry.coordinateSpace.bounds // ... } -
5:35 - Check available space using view bounds
// Checking available space override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() let availableSpace = view.bounds.size // ... } -
8:12 - Configure motion and location body
// Configure motion and heading bodies override func viewDidLoad() { super.viewDidLoad() motionManager.deviceMotionBody = view locationManager.headingBody = view } -
9:51 - Opt into sidebar layout
tabBarController.sidebar.preferredPlacement = .sidebar -
10:22 - Check sidebar availability
tabBarController.sidebar.isAvailable -
10:53 - Set prominent tab identifier
// Set the prominent tab let tabs = [ // ... ] let tabBarController = UITabBarController(tabs: tabs) tabBarController.prominentTabIdentifier = "cart" -
11:30 - Customize bar minimization behavior
// Customize bar minimization behavior override init( nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle? ) { super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) navigationItem.barMinimizationBehavior = .always navigationItem.barMinimizationSafeAreaAdjustment = .never } -
15:05 - Export Xcode skills for use in other tools
xcrun agent skills export
-