WWDC19 #

Modernizing Your UI for iOS 13 - Wednesday

Session materials: https://developer.apple.com/videos/play/wwdc2019/224/ A sample project with complex options will be available here.

Effective from April 2020

New Bar Appearance

appearance.configureWithOpaqueBackground()

appearance.titleTextAttributes = [] appearance.largeTitleTextAttributes = []

navigationBar.standardAppearance = appearance

// Navigation bar appearances .standardAppearance, .compactAppearance, .scrollEdgeAppearance

// button appearances .buttonAppearance, .doneButtonAppearance


`UIToolbarAppearance` & `UITabBarAppearance`

- Similar things applies to individual navigation Items for a specific navigation bar appearance for a single view in the hierarchy
`navigationBar.standardAppearance().copy`

## New Presentation Styles
- They stack on top of each other like a deck
- Dynamic readable width for the presented sheet

- `UIModalPresentationStyle.automatic` -> Resolving to different styles based on the parent view that are presenting
- `UIModalPresentationStyle.pageSheet` -> Automatic resolves to this one for custom view controllers
- `UIModalPresentationStyle.formSheet`
- `.fullScreen` if this is desired intentionally
- `.popover` to get the built in popover style

- Pull to dismiss in sheets are supported out of the box

// UIAdaptivePresentationControllerDelegate

func draftDidChange() {} func presentationControllerDidAttemptToDismiss(_:) { // Ideally present an action sheet here to warn the user } func shouldDismiss() {} func willDismiss() {} func didDismiss() {} ```

Share Extensions

Search Tokens

Creating Tokens

Ranges and Positions

Gestures

Selection Gestures in Custom Text Views

Multiple Selection Gestures in Tables and Collections