WWDC 2021: What's New in UIKit 참고

11910 단어 iOSWWDC2021

Productivity



iPad multitasking


UIWindowScene.ActivationConfiguration(userActivity: userActivity)에서 "새 창에서 열기"명령을 작성할 수 있습니다.
let newSceneAction = UIWindowScene.ActivationAction({ _ in
    // Create the user activity that represents the new scene content
    let userActivity = NSUserActivity(activityType: "com.myapp.detailscene")

    // Return the activation configuration
    return UIWindowScene.ActivationConfiguration(userActivity: userActivity)
})

Keyboard navigation



iPadOS 15
  • Band Selection = 여러 항목을 드래그하여 단번에 선택할 수 있습니다.

  • Keyboard shortcuts



    iPadOS 15
    UIMenuBuilder를 사용하여 키보드 단축키를 만듭니다.
    class AppDelegate: UIResponder, UIApplicationDelegate {
        override func buildMenu(with builder: UIMenuBuilder) {
            // Use the builder to modify the main menu...
        }
    }
    
  • iPad 및 Mac Catalyst의 UIFocusSystem 향상
  • 앱 사이의 드래그 앤 드롭이 iOS 15에서 iPhone도 가능하게


  • iPad pointer





    UI refinements



    Bar 배경 변경



    UIToolbar와 UITabbar에서 아래로 스크롤하면 배경이 없어집니다.



    아래로 스크롤했을 때의 외관은, scrollEdgeAppearance로 커스터마이즈 할 수 있다.
    // Custom scrollEdgeAppearance
    let appearance = UITabBarAppearance()
    appearance.backgroundEffect = nil
    appearance.backgroundColor = .blue
    tabBar.scrollEdgeAppearance = appearance
    
    // Specify the content scrollView
    let scrollView = ... // Content scroll view in your app
    viewController.setContentScrollView(scrollView, for: .bottom)
    

    헤더 변경





    UIListContentConfiguration : iOS 14
    UIListSeparatorConfiguration : iOS 14.5

    절반 높이 시트



    API enhancements



    10:16

    UIButton 확장


  • UIButtonConfiguration 로 외관을 변경할 수 있다.
  • Plain, Gray, Tinted ...
  • Pop-up, Pull-down, Toggle

  • // Configurationを使ってボタン作成
    var config = UIButton.Configuration.tinted()
    config.title = "Add to Cart"
    config.image = UIImage(systemName: "cart.badge.plus")
    config.imagePlacement = .trailing
    config.buttonSize = .large
    config.cornerStyle = .capsule
    let button = UIButton(configuration: config)
    
  • UIContextMenuInteraction 에서 접을 수 있는 하위 메뉴를 지원합니다. API의 추가는 없지만, 이전에는, 서브 메뉴를 탭하면(자) 대체되고 있었던 것이, 전개되게 되었다.


  • SF 기호


  • Monochrome, Hierarchical, Palette, Multicolor의 색을 사용할 수 있게 되었다 (UIKit, SwiftUI, AppKit)

  • UIImageSymbolConfiguration
  • let configuration = UIImage.SymbolConfiguration(
        hierarchicalColor: UIColor.systemOrange
    )
    let image = UIImage(
        systemName: "sun.max.circle.fill",
        withConfiguration: configuration
    )
    
  • .circle, .circle.fill이 API에서 사용할 수 있습니다


  • 동적 유형의 크기 제한



    최소한의 사이즈, 최대 사이즈의 설정이 가능하다.
    extension UIView {
        var minimumContentSizeCategory: UIContentSizeCategory
        var maximumContentSizeCategory: UIContentSizeCategory
    }
    

    칼라


  • 시스템 색상이 모든 플랫폼에서 통합

  • UIColor.tintColor 추가. 동적 색상.
  • iOS 14.5에서 UIColorPicker의 didSelect 콜백 추가

  • TextKit2



    UIScene 상태 복원


  • NSUserActivity를 사용하여 상태를 복원 할 수 있습니다.
  • 이 창 제어 관련은 UIScene 기반 API를 지원하므로 이전 UIApplication 기반 앱은 UIScene으로 마이그레이션해야합니다.


    Cell configuration closures


  • UICollectionView, UITableView의 셀의 Configuration의 갱신을 클로저로 설정할 수 있다. UIButton에도 있습니다.
  • // New UICollectionViewCell.configurationUpdateHandler closures
    let cell: UICollectionViewCell = ...
    
    cell.configurationUpdateHandler = { cell, state in
        var content = UIListContentConfiguration.cell().updated(for: state)
        content.text = "Hello world!"
        if state.isDisabled {
            content.textProperties.color = .systemGray
        }
        cell.contentConfiguration = content
    }
    

    데이터 소스 차이의 개선


  • 기존의 셀을 모두 파기하지 않고, 그 변경에 근거해 UI가 갱신
  • var snapshot = dataSource.snapshot()
    snapshot.reconfigureItems(itemIdentifiers)
    dataSource.apply(snapshot, animatingDifferences: false)
    

    성능



    20:17

    셀 프리페치 개선


  • iOS 15에서 빌드하면 자동으로 활성화됩니다
  • Cell에서 Image를로드하려면 await에서 async로 시도하십시오
  • UIImage.prepareThumbnail에서 적절한 작은 이미지를 만들어라.


    Security and privacy



    Location Button


  • 현재 위치 검색을 한 번만 허용 할 수있는 버튼


  • 붙여 넣을 때 팝업


  • iOS 14에서 다른 앱에서 붙여 넣을 때 화면 상단에 "** pasted from **"라는 팝업이 나오지만 새로 추가 된 표준 붙여 넣기 메뉴 항목 API를 사용하면 표시되지 않습니다. .

  • Private Click Measurement


  • iOS 14.5에서 도입
  • 광고 클릭 및 탭 개인 정보를 보호하는 측정
  • 좋은 웹페이지 즐겨찾기