View in English

  • Apple Developer
    • 시작하기

    시작하기 탐색

    • 개요
    • 알아보기
    • Apple Developer Program

    알림 받기

    • 최신 뉴스
    • Hello Developer
    • 플랫폼

    플랫폼 탐색

    • Apple 플랫폼
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store

    피처링

    • 디자인
    • 배포
    • 게임
    • 액세서리
    • 웹
    • 홈
    • CarPlay
    • 기술

    기술 탐색

    • 개요
    • Xcode
    • Swift
    • SwiftUI

    피처링

    • 손쉬운 사용
    • 앱 인텐트
    • Apple Intelligence
    • 게임
    • 머신 러닝 및 AI
    • 보안
    • Xcode Cloud
    • 커뮤니티

    커뮤니티 탐색

    • 개요
    • Apple과의 만남 이벤트
    • 커뮤니티 주도 이벤트
    • 개발자 포럼
    • 오픈 소스

    피처링

    • WWDC
    • Swift Student Challenge
    • 개발자 이야기
    • App Store 어워드
    • Apple 디자인 어워드
    • 문서

    문서 탐색

    • 문서 라이브러리
    • 기술 개요
    • 샘플 코드
    • 휴먼 인터페이스 가이드라인
    • 비디오

    릴리즈 노트

    • 피처링 업데이트
    • iOS
    • iPadOS
    • macOS
    • watchOS
    • visionOS
    • tvOS
    • Xcode
    • 다운로드

    다운로드 탐색

    • 모든 다운로드
    • 운영 체제
    • 애플리케이션
    • 디자인 리소스

    피처링

    • Xcode
    • TestFlight
    • 서체
    • SF Symbols
    • Icon Composer
    • 지원

    지원 탐색

    • 개요
    • 도움말
    • 개발자 포럼
    • 피드백 지원
    • 문의하기

    피처링

    • 계정 도움말
    • 앱 심사 지침
    • App Store Connect 도움말
    • 새로 추가될 요구 사항
    • 계약 및 지침
    • 시스템 상태
  • 빠른 링크

    • 이벤트
    • 뉴스
    • 포럼
    • 샘플 코드
    • 비디오
 

비디오

메뉴 열기 메뉴 닫기
  • 컬렉션
  • 전체 비디오
  • 소개

더 많은 비디오

  • 소개
  • 요약
  • 코드
  • UIKit 앱 현대화하기

    UIKit의 최신 업데이트를 살펴보세요. iPhone 미러링 사용 시 및 iPad에서 크기를 조정할 때 원활하게 구현될 수 있도록 iPhone 앱 레이아웃을 업데이트하는 방법을 알아보세요. 탭 및 탐색 막대용 새로운 API를 살펴보고, 새로운 Apple Intelligence 기능을 위해 앱을 준비하는 방법을 알아보며, 선택한 코딩 에이전트에 적용하여 코드베이스를 현대화할 수 있는 기술을 소개합니다.

    챕터

    • 0:00 - Introduction
    • 0:34 - App adaptivity
    • 2:10 - Legacy API: App lifecycle
    • 2:51 - Legacy API: Main screen
    • 5:46 - Full-screen mode for games
    • 6:17 - Legacy API: User interface idiom
    • 7:06 - Legacy API: Interface orientation
    • 7:55 - UIView Body protocols for motion & location
    • 8:19 - Test your resizable iPhone app
    • 9:18 - Tab bars and sidebars
    • 10:52 - Navigation bars
    • 12:37 - Menus
    • 13:01 - Integrate with Apple Intelligence
    • 14:07 - Agentic coding
    • 15:32 - Next steps

    리소스

    • 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
      • HD 비디오
      • SD 비디오

    관련 비디오

    WWDC26

    • Device Hub 최대한 활용하기
    • Siri 및 Apple Intelligence를 위한 고급 앱 인텐트 기능 살펴보기

    WWDC25

    • UIKit 앱을 더욱 유연하게 만들기

    WWDC24

    • iPadOS에서 탭 및 사이드바 경험 향상하기
  • 비디오 검색…
    • 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
    • 0:00 - Introduction
    • A modern UIKit app dynamically adjusts to the environment it runs in. iOS 27 introduces new requirements and APIs to help you get there. Discover new APIs in tab bars, navigation bars, and menus; Apple Intelligence support; and a new skill that helps an agent handle much of this modernization work automatically.

    • 0:34 - App adaptivity
    • iPhone apps are now fully resizable in iPhone Mirroring on Mac and when running on iPad. Your app needs to dynamically adjust to any available scene size at runtime. The four areas to audit are scene lifecycle adoption, main screen references, user interface idiom checks, and interface orientation checks.

    • 2:10 - Legacy API: App lifecycle
    • UIScene lifecycle is now required when building with the latest SDKs; apps without it will no longer launch. If you haven't migrated from app lifecycle yet, start here.

    • 2:51 - Legacy API: Main screen
    • UIScreen.main always refers to the device's main screen, but in resizable environments your scene may be running on a different screen entirely. Replace it with screen references from the window scene, trait collections for scale, and effective geometry for available space.

    • 5:46 - Full-screen mode for games
    • UIRequiresFullscreen is now honored on iPhone in resizable environments, enabling discrete resizing that respects your supported interface orientations so games always render at full quality.

    • 6:17 - Legacy API: User interface idiom
    • The user interface idiom trait is no longer meaningful for layout. An iPhone app running on iPad stays in the phone idiom but is fully resizable. Use size classes instead.

    • 7:06 - Legacy API: Interface orientation
    • Supported interface orientations are treated as a preference only and are ignored in resizable environments, including iPhone Mirroring which always reports portrait. Replace orientation checks with size classes.

    • 7:55 - UIView Body protocols for motion & location
    • UIView now conforms to the new Body protocols from CoreMotion and CoreLocation in iOS 27, making it straightforward to keep motion and location data in the correct coordinate space regardless of interface orientation.

    • 8:19 - Test your resizable iPhone app
    • Xcode 27's Device Hub app and Xcode Previews let you freely drag the edges of the simulator to test any screen size without needing multiple devices. Test with real devices for iPhone Mirroring and iPad.

    • 9:18 - Tab bars and sidebars
    • iPhone apps can now opt into a sidebar layout by setting tabBarController.sidebar.preferredPlacement to .sidebar, with the system deciding when there's enough space to show it. Check tabBarController.sidebar.isAvailable to determine if the system can show the sidebar, and use tabBarController.prominentTabIdentifier to pin any tab so it stays visible even when the tab bar collapses during scroll.

    • 10:52 - Navigation bars
    • Navigation bars can now slide away during scroll to give people more room. The system determines when this happens by default; override it with barMinimizationBehavior. The .automatic scroll edge effect style has new visuals; apps that previously overrode it to .soft should re-evaluate their design.

    • 12:37 - Menus
    • Menu element images may no longer appear by default in some contexts like menu bars on iPadOS and macOS. Use preferredImageVisibility to override this behavior where needed.

    • 13:01 - Integrate with Apple Intelligence
    • Menus automatically display an Ask Siri button when there's content relevant for Siri. If your app supports drag and drop, Siri can load resources from your drag handlers. Drag sessions can be initiated without a user gesture, so avoid triggering animations or presenting modal UI from sessionWillBegin.

    • 14:07 - Agentic coding
    • Xcode 27's app modernization skill can automatically convert mainScreen calls, replace orientation checks with size class checks, and migrate your app to scene lifecycle. Skills can also be exported for use in other tools.

    • 15:32 - Next steps
    • Build with the iOS 27 SDK, test in Device Hub and iPhone Mirroring on macOS 27, identify flexibility gaps in your app, and try the agentic modernization skill.

Developer Footer

  • 비디오
  • WWDC26
  • UIKit 앱 현대화하기
  • 메뉴 열기 메뉴 닫기
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    메뉴 열기 메뉴 닫기
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    메뉴 열기 메뉴 닫기
    • 손쉬운 사용
    • 액세서리
    • Apple Intelligence
    • 앱 확장 프로그램
    • App Store
    • 오디오 및 비디오(영문)
    • 증강 현실
    • 디자인
    • 배포
    • 교육
    • 서체(영문)
    • 게임
    • 건강 및 피트니스
    • 앱 내 구입
    • 현지화
    • 지도 및 위치
    • 머신 러닝 및 AI
    • 오픈 소스(영문)
    • 보안
    • Safari 및 웹(영문)
    메뉴 열기 메뉴 닫기
    • 문서(영문)
    • 튜토리얼
    • 다운로드
    • 포럼(영문)
    • 비디오
    메뉴 열기 메뉴 닫기
    • 지원 문서
    • 문의하기
    • 버그 보고
    • 시스템 상태(영문)
    메뉴 열기 메뉴 닫기
    • Apple Developer
    • App Store Connect
    • 인증서, 식별자 및 프로파일(영문)
    • 피드백 지원
    메뉴 열기 메뉴 닫기
    • 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(영문)
    메뉴 열기 메뉴 닫기
    • Apple과의 만남
    • Apple Developer Center
    • App Store 어워드(영문)
    • Apple 디자인 어워드
    • Apple Developer Academy(영문)
    • WWDC
    최신 뉴스 읽기.
    Apple Developer 앱 받기.
    Copyright © 2026 Apple Inc. 모든 권리 보유.
    약관 개인정보 처리방침 계약 및 지침