View in English

  • Apple Developer
    • Get Started

    Explore Get Started

    • Overview
    • Learn
    • Apple Developer Program

    Stay Updated

    • Latest News
    • Hello Developer
    • Platforms

    Explore Platforms

    • Apple Platforms
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store

    Featured

    • Design
    • Distribution
    • Games
    • Accessories
    • Web
    • Home
    • CarPlay
    • Technologies

    Explore Technologies

    • Overview
    • Xcode
    • Swift
    • SwiftUI

    Featured

    • Accessibility
    • App Intents
    • Apple Intelligence
    • Games
    • Machine Learning & AI
    • Security
    • Xcode Cloud
    • Community

    Explore Community

    • Overview
    • Meet with Apple events
    • Community-driven events
    • Developer Forums
    • Open Source

    Featured

    • WWDC
    • Swift Student Challenge
    • Developer Stories
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Centers
    • Documentation

    Explore Documentation

    • Documentation Library
    • Technology Overviews
    • Sample Code
    • Human Interface Guidelines
    • Videos

    Release Notes

    • Featured Updates
    • iOS
    • iPadOS
    • macOS
    • watchOS
    • visionOS
    • tvOS
    • Xcode
    • Downloads

    Explore Downloads

    • All Downloads
    • Operating Systems
    • Applications
    • Design Resources

    Featured

    • Xcode
    • TestFlight
    • Fonts
    • SF Symbols
    • Icon Composer
    • Support

    Explore Support

    • Overview
    • Help Guides
    • Developer Forums
    • Feedback Assistant
    • Contact Us

    Featured

    • Account Help
    • App Review Guidelines
    • App Store Connect Help
    • Upcoming Requirements
    • Agreements and Guidelines
    • System Status
  • Quick Links

    • Events
    • News
    • Forums
    • Sample Code
    • Videos
 

Videos

Abrir menú Cerrar menú
  • Colecciones
  • Todos los videos
  • Información

Más videos

  • Información
  • Resumen
  • Código
  • Novedades de SwiftUI

    Descubre las novedades de SwiftUI que permiten crear fantásticas apps para cualquier plataforma de Apple. Exploraremos cómo darle a tu app un aspecto completamente nuevo con Liquid Glass. Descubre cómo aumentar el rendimiento con mejoras al marco y nuevos instrumentos, e integra capacidades avanzadas como contenido web y edición de texto enriquecido. También te mostraremos cómo SwiftUI se está expandiendo a más lugares, incluido el diseño de vistas en tres dimensiones.

    Capítulos

    • 0:00 - Introducción
    • 1:22 - Haz que el nuevo diseño brille
    • 6:59 - Bases del marco
    • 14:33 - SwiftUI en el sistema
    • 20:04 - Expandir las vistas de SwiftUI
    • 25:01 - Próximos pasos

    Recursos

    • Applying Liquid Glass to custom views
    • Populating SwiftUI menus with adaptive controls
    • Adopting Liquid Glass
    • Human Interface Guidelines
      • Video HD
      • Video SD

    Videos relacionados

    WWDC25

    • Adopción de la concurrencia en Swift
    • Codificación conjunta: Crea una experiencia de texto enriquecida en SwiftUI con AttributedString
    • Codificación conjunta: Explora la localización con Xcode
    • Conoce el diseño espacial de SwiftUI
    • Conoce WebKit para SwiftUI
    • Crea una app de SwiftUI con el nuevo diseño
    • Explora la concurrencia en SwiftUI
    • Lleva los gráficos Swift a la tercera dimensión
    • Mejor juntos: SwiftUI y RealityKit
    • Mejora el diseño de tu app para iPad
    • Novedades de visionOS 26
    • Novedades de widgets
    • Novedades del renderizado de Metal para apps inmersivas
    • Optimiza el rendimiento de SwiftUI con instrumentos
    • Personaliza tu app para acceso asistido
    • Prepara el escenario con SwiftUI en visionOS
  • Buscar este video…
    • 2:27 - Toolbar spacer

      import SwiftUI
      
      struct TripDetailView: View {
          var body: some View {
              NavigationStack {
                  TripList()
                      .toolbar {
                          ToolbarItemGroup(placement: .primaryAction) {
                              UpButton()
                              DownButton()
                          }
      
                          ToolbarSpacer(.fixed, placement: .primaryAction)
      
                          ToolbarItem(placement: .primaryAction) {
                              SettingsButton()
                          }
                      }
              }
          }
      }
      
      struct TripList: View {
          var body: some View {
              Text("TripList")
          }
      }
      
      struct UpButton: View {
          var body: some View {
              Button("Up", systemImage: "chevron.up") { }
          }
      }
      
      struct DownButton: View {
          var body: some View {
              Button("Down", systemImage: "chevron.down") { }
          }
      }
      
      struct SettingsButton: View {
          var body: some View {
              Button("List Settings", systemImage: "ellipsis") { }
          }
      }
    • 2:52 - Toolbar item tint

      import SwiftUI
      
      struct InspectorView: View {
          var body: some View {
              NavigationStack {
                  InspectorMap()
                      .toolbar {
                          ToolbarItem(placement: .primaryAction) {
                              SaveLocationButton()
                                  .buttonStyle(.borderedProminent)
                                  .tint(.pink)
                          }
                      }
              }
          }
      }
      
      struct InspectorMap: View {
          var body: some View {
              Text("InspectorMap")
          }
      }
      
      struct SaveLocationButton: View {
          var body: some View {
              Button("SaveLocationButton") { }
          }
      }
    • 3:30 - Searchable

      import SwiftUI
      
      struct PlannerSplitView: View {
          @State private var query: String = ""
      
          var body: some View {
              NavigationSplitView {
                  Text("Sidebar")
              } detail: {
                  Text("Detail")
              }
              .searchable(
                  text: $query,
                  prompt: "What are you looking for?"
              )
          }
      }
    • 4:12 - Search tab

      import SwiftUI
      
      struct HealthTabView: View {
          @State private var text: String = ""
          
          var body: some View {
              TabView {
                  Tab("Summary", systemImage: "heart") {
                      NavigationStack {
                          Text("Summary")
                      }
                  }
                  Tab("Sharing", systemImage: "person.2") {
                      NavigationStack {
                          Text("Sharing")
                      }
                  }
                  Tab(role: .search) {
                      NavigationStack {
                          Text("Search")
                      }
                  }
              }
              .searchable(text: $text)
          }
      }
    • 4:37 - Glass effect

      import SwiftUI
      
      struct ToTopButton: View {
          var body: some View {
              Button("To Top", systemImage: "chevron.up") {
                  scrollToTop()
              }
              .padding()
              .glassEffect()
          }
      
          func scrollToTop() {
              // Scroll to top of view
          }
      }
    • 5:20 - Menu bar commands

      import SwiftUI
      
      @main
      struct TravelPhotographyApp: App {
          var body: some Scene {
              WindowGroup {
                  RootView()
              }
              .commands {
                  TextEditingCommands()
              }
          }
      }
      
      struct RootView: View {
          var body: some View {
              Text("RootView")
          }
      }
    • 6:40 - Window resize anchor

      import SwiftUI
      
      struct SettingsTabView: View {
          @State private var selection: SectionTab = .general
          var body: some View {
              TabView(selection: $selection.animation()) {
                  Tab("General", systemImage: "gear", value: .general) {
                      Text("General")
                  }
                  Tab("Sections", systemImage: "list.bullet", value: .sections) {
                      Text("Sections")
                  }
              }
              .windowResizeAnchor(.top)
          }
      }
      
      enum SectionTab: Hashable {
          case general
          case sections
      }
    • 11:24 - @Animatable macro

      import SwiftUI
      
      @Animatable
      struct LoadingArc: Shape {
          var center: CGPoint
          var radius: CGFloat
          var startAngle: Angle
          var endAngle: Angle
          @AnimatableIgnored var drawPathClockwise: Bool
      
          func path(in rect: CGRect) -> Path {
              // Creates a `Path` arc using properties
              return Path()
          }
      }
    • 12:15 - Spatial overlay

      import RealityKit
      import SwiftUI
      
      struct Map: View {
          @Binding var timeAlignment: Alignment3D
      
          var body: some View {
              Model3D(named: "Map")
                  .spatialOverlay(
                      alignment: timeAlignment
                  ) {
                      Sun()
                  }
          }
      }
      
      struct Sun: View {
          var body: some View {
              Model3D(named: "Sun")
          }
      }
    • 13:04 - Manipulable and surface snapping

      import ARKit
      import RealityKit
      import SwiftUI
      
      struct BackpackWaterBottle: View {
          @Environment(\.surfaceSnappingInfo) var snappingInfo: SurfaceSnappingInfo
      
          var body: some View {
              VStackLayout().depthAlignment(.center) {
                  waterBottleView
                      .manipulable()
      
                  Pedestal()
                      .opacity(
                          snappingInfo.classification == .table ? 1.0 : 0.0)
              }
          }
      
          var waterBottleView: some View {
              Model3D(named: "waterBottle")
          }
      }
      
      struct WaterBottleView: View {
          var body: some View {
              Model3D(named: "waterBottle")
          }
      }
      
      struct Pedestal: View {
          var body: some View {
              Model3D(named: "pedestal")
          }
      }
    • 15:00 - SwiftUI scenes

      import SwiftUI
      
      @main
      struct PhotoWalk: App {
          var body: some Scene {
              WindowGroup(id: "AppContents") {
                  PhotoWalkContent()
              }
          }
      }
      
      struct PhotoWalkContent: View {
          var body: some View {
              Text("PhotoWalkContent")
          }
      }
    • 16:28 - Assistive Access scene

      import SwiftUI
      
      @main
      struct PhotoWalk: App {
        var body: some Scene {
          WindowGroup {
            ContentView()
          }
      
          AssistiveAccess {
            AssistiveAccessContentView()
          }
        }
      }
      
      struct ContentView: View {
        var body: some View {
          Text("ContentView")
        }
      }
      
      struct AssistiveAccessContentView: View {
        var body: some View {
          Text("AssistiveAccessContentView")
        }
      }
    • 17:52 - SwiftUI presentations from RealityKit

      import RealityKit
      import SwiftUI
      
      struct PopoverComponentView: View {
          @State private var popoverPresented: Bool = false
          var body: some View {
              RealityView { c in
                  let mapEntity = Entity()
      
                  let popover = Entity()
                  mapEntity.addChild(popover)
                  popover.components[PresentationComponent.self] = PresentationComponent(
                      isPresented: $popoverPresented,
                      configuration: .popover(arrowEdge: .bottom),
                      content: DetailsView()
                  )
              }
          }
      }
      
      struct DetailsView: View {
          var body: some View {
              Text("DetailsView")
          }
      }
    • 19:24 - Level of detail

      import SwiftUI
      import WidgetKit
      
      struct PhotoCountdownView: View {
          @Environment(\.levelOfDetail) var levelOfDetail: LevelOfDetail
          var body: some View {
              switch levelOfDetail {
              case .default:
                  RecentPhotosView()
              case .simplified:
                  CountdownView()
              default:
                  Text("Unknown level of detail")
              }
          }
      }
      
      struct RecentPhotosView: View {
          var body: some View {
              Text("RecentPhotosView")
          }
      }
      
      struct CountdownView: View {
          var body: some View {
              Text("CountdownView")
          }
      }
    • 20:28 - WebView

      import SwiftUI
      import WebKit
      
      struct HikeGuideWebView: View {
          var body: some View {
              WebView(url: sunshineMountainURL)
          }
      
          var sunshineMountainURL: URL {
              URL(string: "sunshineMountainURL")!
          }
      }
    • 20:44 - WebView with WebPage

      import SwiftUI
      import WebKit
      
      struct InAppBrowser: View {
          @State private var page = WebPage()
      
          var body: some View {
              WebView(page)
                  .ignoresSafeArea()
                  .onAppear {
                      page.load(URLRequest(url: sunshineMountainURL))
                  }
          }
      
          var sunshineMountainURL: URL {
              URL(string: "sunshineMountainURL")!
          }
      }
    • 21:35 - 3D charts

      import Charts
      import SwiftUI
      
      struct HikePlotView: View {
          var body: some View {
              Chart3D {
                  SurfacePlot(
                      x: "x", y: "y", z: "z") { x, y in
                          sin(x) * cos(y)
                      }
                      .foregroundStyle(Gradient(colors: [.orange, .pink]))
              }
              .chartXScale(domain: -3 ... 3)
              .chartYScale(domain: -3 ... 3)
              .chartZScale(domain: -3 ... 3)
          }
      }
    • 22:18 - macOS drag and drop

      import SwiftUI
      
      struct DragDropExample: View {
          @State private var selectedPhotos: [Photo.ID] = []
          var body: some View {
              ScrollView {
                  LazyVGrid(columns: gridColumns) {
                      ForEach(model.photos) { photo in
                          view(photo: photo)
                              .draggable(containerItemID: photo.id)
                      }
                  }
              }
              .dragContainer(for: Photo.self, selection: selectedPhotos) { draggedIDs in
                  photos(ids: draggedIDs)
              }
              .dragConfiguration(DragConfiguration(allowMove: false, allowDelete: true))
                  .onDragSessionUpdated { session in
                      let ids = session.draggedItemIDs(for: Photo.ID.self)
                          if session.phase == .ended(.delete) {
                              trash(ids)
                              deletePhotos(ids)
                          }
                  }
              .dragPreviewsFormation(.stack)
          }
      }
    • 23:55 - Rich text view

      import SwiftUI
      
      struct CommentEditor: View {
          @Binding var commentText: AttributedString
      
          var body: some View {
              TextEditor(text: $commentText)
          }
      }
    • 0:00 - Introducción
    • Anna y Peter presentan la sesión, destacando las principales mejoras en SwiftUI que van desde el rendimiento hasta los elementos de la IU. Mencionan una app de senderismo que crearon para mostrar estas mejoras. Hablarán de las nuevas funcionalidades del sistema, rendimiento, animaciones, diseño, nuevas plataformas para SwiftUI, soporte de contenido web y texto enriquecido.

    • 1:22 - Haz que el nuevo diseño brille
    • Esta sección se centra en el nuevo sistema de diseño y cómo afecta la apariencia de las apps. Se explican los contenedores de navegación, las barras de pestañas y las apariencias de las barras de herramientas. También incluye mejoras en la búsqueda y los controles. La sección concluye con mejoras en las interacciones del iPad, incluida una nueva barra de menú y un cambio de tamaño de ventana flexible, y un cambio de tamaño de ventana mejorado en macOS. API Presentadas/Destacadas: API Toolbar Spacer: se usa para ajustar las secciones de los elementos de la barra de herramientas. Tinte de Liquid Glass en las barras de herramientas: permite elementos de la barra de herramientas más destacados mediante estilos de botones destacados con borde y un color de tinte. Efecto de borde de desplazamiento: aplica un efecto de desenfoque al contenido de la barra de herramientas al desplazarse. Funciones de búsqueda en las barras de pestañas: permite que la pestaña de búsqueda aparezca separada del resto de las pestañas en la barra. Comandos de API: se usa para crear la barra de menús en macOS y ahora crea el mismo resultado en el iPad. Anclaje de cambio de tamaño de ventana: se usa para personalizar el origen de la animación de cambio de tamaño de la ventana. Deprecación de UIRequiresFullscreen: la clave del archivo de propiedades está obsoleta en iPadOS 26.

    • 6:59 - Bases del marco
    • Esta sección abarca las mejoras en los componentes básicos de SwiftUI, incluido el rendimiento, la facilidad de uso y el diseño. Se detallan las mejoras de rendimiento en listas y desplazamiento, y se presenta el nuevo instrumento de rendimiento SwiftUI en Xcode. También se habla de la macro Animatable y las nuevas API para diseño volumétrico, incluidas aquellas para visionOS. API Presentadas/Destacadas: Instrumento de rendimiento de SwiftUI (Xcode): una nueva herramienta para inspeccionar áreas problemáticas de rendimiento. Macro Animatable: simplifica el uso del protocolo Animatable al sintetizar automáticamente la propiedad de datos animables. Macro AnimatableIgnored: excluye propiedades de la animación cuando se usa la macro Animatable. Alignment3D: un nuevo tipo para alinear vistas en el espacio 3D. Modificador de superposición espacial: se usa para colocar vistas en el espacio 3D. Modificador manipulable: permite a los usuarios interactuar con objetos en la app. API Scene Snapping: se usa para leer información del entorno.

    • 14:33 - SwiftUI en el sistema
    • Esta sección se centra en ampliar el alcance de SwiftUI en diferentes plataformas de Apple. Trata sobre la vinculación de escenas, que permite que las apps de UIKit y AppKit interoperen con escenas de SwiftUI. Incluye la escena RemoteImmersiveSpace para renderizar contenido estéreo en el Apple Vision Pro desde macOS. También menciona el tipo de escena AssistiveAccess para un modo especial para usuarios con discapacidades cognitivas. La sección también incluye las mejoras en el trabajo con AppKit, RealityKit, Controles y Widgets. API Presentadas/Destacadas: Scene Bridging: permite que las apps de UIKit y AppKit usen escenas SwiftUI. Escena MenuBarExtra: un nuevo tipo de escena. Escena ImmersiveSpace: un nuevo tipo de escena. Escena RemoteImmersiveSpace: una escena de macOS para renderizar contenido estéreo en el Apple Vision Pro. Escena AssistiveAccess: un tipo de escena para mostrar la IU cuando alguien tiene el iPhone en modo en Assistive Access. NSGestureRecognizerRepresentable: se usa para conectar los gestos de AppKit con SwiftUI. Observable Conformance para entidades de RealityKit: facilita la observación de cambios en las entidades RealityKit desde las vistas de SwiftUI. Valor del entorno LevelOfDetail: se usa para personalizar la apariencia de los widgets según la proximidad.

    • 20:04 - Expandir las vistas de SwiftUI
    • Esta sección destaca las nuevas capacidades de las vistas de SwiftUI. Incluye el nuevo WebView para integrar contenido web, mejoras en Swift Charts para gráficos 3D, mejoras en Arrastrar y soltar, y nuevo soporte para edición de texto enriquecido usando AttributedString en TextView. API Presentadas/Destacadas: WebView: una nueva vista de SwiftUI para mostrar contenido web en tu app. WebPage: un nuevo tipo de modelo observable diseñado para Swift para permitir una interacción enriquecida con el contenido web. Chart3D: se usa para mostrar gráficos en tres dimensiones. Modificadores específicos del eje Z (Swift Charts): se usan para especificar escalas en el espacio 3D. Modificador de arrastre (varios elementos): Permite arrastrar varios elementos. Modificador DragContainer: Convierte una vista en un contenedor para elementos arrastrables. API DragConfiguration: se usa para personalizar las operaciones admitidas para arrastres. Modificador OnDragSessionUpdated: se usa para observar eventos de arrastre. TextView con AttributedString: permite la edición de texto enriquecido en SwiftUI.

    • 25:01 - Próximos pasos
    • Los presentadores resumen las conclusiones clave de la sesión y alientan a los desarrolladores a explorar las nuevas funcionalidades y API. Destacan el nuevo diseño, el instrumento de rendimiento, la disposición volumétrica, las mejoras en texto enriquecido y el soporte ampliado para controles y widgets en distintas plataformas.

Developer Footer

  • Videos
  • WWDC25
  • Novedades de SwiftUI
  • Open Menu Close Menu
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • Icon Composer
    • SF Symbols
    Open Menu Close Menu
    • Accessibility
    • Accessories
    • Apple Intelligence
    • Audio & Video
    • Augmented Reality
    • Business
    • Design
    • Distribution
    • Education
    • Games
    • Health & Fitness
    • In-App Purchase
    • Localization
    • Maps & Location
    • Machine Learning & AI
    • Security
    • Safari & Web
    Open Menu Close Menu
    • Documentation
    • Downloads
    • Sample Code
    • Videos
    Open Menu Close Menu
    • Help Guides & Articles
    • Contact Us
    • Forums
    • Feedback & Bug Reporting
    • System Status
    Open Menu Close Menu
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles
    • Feedback Assistant
    Open Menu Close Menu
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program
    • Mini Apps Partner Program
    • News Partner Program
    • Video Partner Program
    • Security Bounty Program
    • Security Research Device Program
    Open Menu Close Menu
    • Meet with Apple
    • Apple Developer Centers
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Academies
    • WWDC
    Read the latest news.
    Get the Apple Developer app.
    Copyright © 2026 Apple Inc. All rights reserved.
    Terms of Use Privacy Policy Agreements and Guidelines