+ All Categories
Home > Documents > New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces...

New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces...

Date post: 11-Aug-2020
Category:
Upload: others
View: 5 times
Download: 0 times
Share this document with a friend
153
© 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple. #WWDC15 New UIKit Support for International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization Software Engineer Paul Borokhov Internationalization Software Engineer App Frameworks Session 222
Transcript
Page 1: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

© 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple.

#WWDC15

New UIKit Support for International User Interfaces

Sara Radi Internationalization Software EngineerAaltan Ahmad Internationalization Software EngineerPaul Borokhov Internationalization Software Engineer

App Frameworks

Session 222

Page 2: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Designing UI for RTL Languages

Page 3: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization
Page 4: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Left-to-Right

Page 5: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Left-to-Right Right-to-Left

Page 6: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization
Page 7: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Over 500 millionnative speakers

Page 8: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Agenda

Right-to-Left (RTL) User Interface Challenges

Page 9: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Agenda

Right-to-Left (RTL) User Interface Challenges Supporting RTL UI with UIKit Controls

Page 10: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Agenda

Right-to-Left (RTL) User Interface Challenges Supporting RTL UI with UIKit Controls Custom Layout

Page 11: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Agenda

Right-to-Left (RTL) User Interface Challenges Supporting RTL UI with UIKit Controls Custom LayoutExceptions

Page 12: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Overview

Page 13: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

LTR reading direction

Order

Page 14: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

LTR reading direction

Order

1

Page 15: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

LTR reading direction

Order

1 2

Page 16: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

LTR reading direction

Order

1 2 3

Page 17: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Order

123

RTL reading direction

LTR reading direction

Page 18: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Navigation

LOREM

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas a scelerisque orci. Sed bibendum interdum orci, id luctus est luctus vitae.

1 2 3

Back

Next

Page 19: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Navigation

LOREM

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Maecenas a scelerisque orci. Sed bibendum interdum orci,

id luctus est luctus vitae.

12

Next

Back

3

Page 20: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

New in UIKitRight-to-left support

Page 21: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization
Page 22: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Standard Controls

Page 23: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Table Views

Page 24: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Table Views

Left-to-Right

Page 25: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Table Views

Left-to-Right Right-to-Left

Page 26: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Navigation Controller

Page 27: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Tracking Gestures

Page 28: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Tracking Gestures

Page 29: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Enabling Right-to-Left Support

Page 30: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Enabling Right-to-Left Support

Link against iOS 9

Page 31: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Enabling Right-to-Left Support

Link against iOS 9As simple as adding a RTL localization

Page 32: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Enabling Right-to-Left Support

Link against iOS 9As simple as adding a RTL localization

Base.lproj/Main.storyboard

Page 33: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Enabling Right-to-Left Support

Link against iOS 9As simple as adding a RTL localization

ar hefa

Base.lproj/Main.storyboard

Page 34: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Enabling Right-to-Left Support

Link against iOS 9As simple as adding a RTL localization

ar hefa

Base.lproj/Main.storyboard

Page 35: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

User Interface Testing

Page 36: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization
Page 37: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization
Page 38: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

DemoLocalization

Page 39: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Custom Layout

Page 40: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

API Changes

Page 41: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

API Changes

UITextField• leftView/rightView and leftViewMode/rightViewMode flip automatically• leftViewRectForBounds(_:)/rightViewRectForBounds(_:) stay unchanged

Page 42: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

API Changes

UITextField• leftView/rightView and leftViewMode/rightViewMode flip automatically• leftViewRectForBounds(_:)/rightViewRectForBounds(_:) stay unchanged

UITableView• Insets set using the separatorInset property automatically flip left and right

measurements

Page 43: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

API Changes

Page 44: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

API Changes

UISlider• minimumValueImage and maximumValueImage flip automatically• Be aware of adjustments done in minimumValueImageRectForBounds(_:) and maximumValueImageRectForBounds(_:)

Page 45: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

API Changes

UISlider• minimumValueImage and maximumValueImage flip automatically• Be aware of adjustments done in minimumValueImageRectForBounds(_:) and maximumValueImageRectForBounds(_:)

UINavigationItem• leftBarButtonItem(s) and rightBarButtonItem(s) flip automatically• Beware of views added outside of API

Page 46: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Table View Cells

Page 47: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Table View Cells

Standard cells flip automatically

Page 48: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Table View Cells

Standard cells flip automaticallyCustom layouts need to be flipped too

Page 49: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Collection View Flow Layouts

Page 50: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Collection View Flow Layouts

UICollectionViewFlowLayout supports right to left

Page 51: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Collection View Flow Layouts

UICollectionViewFlowLayout supports right to leftReverse math for custom flow layouts

Page 52: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Collection View Flow Layouts

UICollectionViewFlowLayout supports right to leftReverse math for custom flow layouts• Subclass UICollectionViewFlowLayout

Page 53: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Collection View Flow Layouts

UICollectionViewFlowLayout supports right to leftReverse math for custom flow layouts• Subclass UICollectionViewFlowLayout

Cocoa Touch Best Practices Presidio Friday 1:30PM

Page 54: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Auto Layout

Many reasons to use Auto Layout

Page 55: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Auto Layout

Many reasons to use Auto Layout• Available since iOS 6

Page 56: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Auto Layout

Many reasons to use Auto Layout• Available since iOS 6• Different screen sizes

Page 57: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Auto Layout

Many reasons to use Auto Layout• Available since iOS 6• Different screen sizes• Split-screen multitasking

Page 58: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Auto Layout

Many reasons to use Auto Layout• Available since iOS 6• Different screen sizes• Split-screen multitasking• Localization

Page 59: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Auto Layout

Many reasons to use Auto Layout• Available since iOS 6• Different screen sizes• Split-screen multitasking• Localization

Page 60: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Auto Layout

Many reasons to use Auto Layout• Available since iOS 6• Different screen sizes• Split-screen multitasking• Localization

Page 61: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Auto Layout

Many reasons to use Auto Layout• Available since iOS 6• Different screen sizes• Split-screen multitasking• Localization

Page 62: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Auto Layout

Many reasons to use Auto Layout• Available since iOS 6• Different screen sizes• Split-screen multitasking• Localization

Page 63: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Auto Layout

Many reasons to use Auto Layout• Available since iOS 6• Different screen sizes• Split-screen multitasking• Localization

One more reason–right-to-left!

Page 64: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Auto Layout

Many reasons to use Auto Layout• Available since iOS 6• Different screen sizes• Split-screen multitasking• Localization

One more reason–right-to-left!Can be used in storyboards, programmatically, or both

Page 65: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Auto Layout

Page 66: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Auto Layout

Use leading and trailing constraints

Page 67: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Auto Layout

Use leading and trailing constraints

Xcode

Page 68: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Auto Layout

Use leading and trailing constraints

Xcode

First name PaulFirst name Paul

Page 69: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Auto Layout

Use leading and trailing constraints

Xcode

≥First name PaulFirst name Paul

Page 70: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Auto Layout

Use leading and trailing constraints

Xcode

Left-to-right

≥First name Paul

First name Paul

Page 71: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Auto Layout

Use leading and trailing constraints

Xcode

Right-to-left

Paul First name

First name Paul

Page 72: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Auto Layout

Use leading and trailing constraintsStoryboards

Xcode

Right-to-left

Paul First name

First name Paul

Page 73: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Auto Layout

Use leading and trailing constraintsStoryboards• The default

Xcode

Right-to-left

Paul First name

First name Paul

Page 74: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Auto Layout

Use leading and trailing constraintsStoryboards• The default

Code

Xcode

Right-to-left

Paul First name

First name Paul

Page 75: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Auto Layout

Use leading and trailing constraintsStoryboards• The default

Code• The default in visual format language

Xcode

Right-to-left

Paul First name

First name Paul

Page 76: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Auto Layout

Use leading and trailing constraintsStoryboards• The default

Code• The default in visual format language• Use explicitly for manual constraints

and layout anchors

Xcode

Right-to-left

Paul First name

First name Paul

Page 77: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Animations

Flip your x-axis animations if using frames• Not recommended

Page 78: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Animations

Flip your x-axis animations if using frames• Not recommended

Page 79: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Animations

Flip your x-axis animations if using frames• Not recommended

Use Auto Layout with leading and trailing constraints instead

Page 80: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Animations

Page 81: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Animations

let duration = 0.5 // time in seconds let newOffset = 10 // new constraint value to animate to self.layoutIfNeeded() // make sure all frames are at the starting position UIView.animateWithDuration(duration) {    self.animatedConstraint?.constant = newOffset    self.layoutIfNeeded() // layout again to update the frames}

Page 82: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Animations

let duration = 0.5 // time in seconds let newOffset = 10 // new constraint value to animate to self.layoutIfNeeded() // make sure all frames are at the starting position UIView.animateWithDuration(duration) {    self.animatedConstraint?.constant = newOffset    self.layoutIfNeeded() // layout again to update the frames}

Page 83: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Animations

let duration = 0.5 // time in seconds let newOffset = 10 // new constraint value to animate to self.layoutIfNeeded() // make sure all frames are at the starting position UIView.animateWithDuration(duration) {    self.animatedConstraint?.constant = newOffset    self.layoutIfNeeded() // layout again to update the frames}

Page 84: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Animations

let duration = 0.5 // time in seconds let newOffset = 10 // new constraint value to animate to self.layoutIfNeeded() // make sure all frames are at the starting position UIView.animateWithDuration(duration) {    self.animatedConstraint?.constant = newOffset    self.layoutIfNeeded() // layout again to update the frames}

Page 85: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Animations

let duration = 0.5 // time in seconds let newOffset = 10 // new constraint value to animate to self.layoutIfNeeded() // make sure all frames are at the starting position UIView.animateWithDuration(duration) {    self.animatedConstraint?.constant = newOffset    self.layoutIfNeeded() // layout again to update the frames}

Page 86: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Animations

let duration = 0.5 // time in seconds let newOffset = 10 // new constraint value to animate to self.layoutIfNeeded() // make sure all frames are at the starting position UIView.animateWithDuration(duration) {    self.animatedConstraint?.constant = newOffset    self.layoutIfNeeded() // layout again to update the frames}

Page 87: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Animations

let duration = 0.5 // time in seconds let newOffset = 10 // new constraint value to animate to self.layoutIfNeeded() // make sure all frames are at the starting position UIView.animateWithDuration(duration) {    self.animatedConstraint?.constant = newOffset    self.layoutIfNeeded() // layout again to update the frames}

Page 88: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Tracking Gestures

Gesture recognizers remain unchanged• Inherently physical, map-to-finger movement• A “flipped” recognizer wouldn’t make sense

Page 89: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Tracking Gestures

Page 90: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Tracking Gestures

Be aware of what’s being manipulated in UI

Page 91: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Tracking Gestures

Be aware of what’s being manipulated in UI• Paintbrush on a canvas?

Page 92: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Tracking Gestures

Be aware of what’s being manipulated in UI• Paintbrush on a canvas?• Table view cell?

Page 93: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Tracking Gestures

Be aware of what’s being manipulated in UI• Paintbrush on a canvas?• Table view cell?

Page 94: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Tracking Gestures

Be aware of what’s being manipulated in UI• Paintbrush on a canvas?• Table view cell?• Navigation?

Page 95: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Tracking Gestures

Be aware of what’s being manipulated in UI• Paintbrush on a canvas?• Table view cell?• Navigation?

Make sure that position changes correspond to movement

Page 96: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Tracking Gestures

Be aware of what’s being manipulated in UI• Paintbrush on a canvas?• Table view cell?• Navigation?

Make sure that position changes correspond to movement• Use Auto Layout

Page 97: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

DemoCustom layout

Page 98: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

ExceptionsViews

Page 99: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

ExceptionsSemantic content attributes

Page 100: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

ExceptionsSemantic content attributes

var semanticContentAttribute: UISemanticContentAttribute

Page 101: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

ExceptionsSemantic content attributes

var semanticContentAttribute: UISemanticContentAttribute

Not all UI flips

Page 102: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

ExceptionsSemantic content attributes

var semanticContentAttribute: UISemanticContentAttribute

Not all UI flipsDefault is .Unspecified

Page 103: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

ExceptionsSemantic content attributes

var semanticContentAttribute: UISemanticContentAttribute

Not all UI flipsDefault is .UnspecifiedSome UI needs different semantic content attribute for correct layout

Page 104: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

ExceptionsSemantic content attributes

var semanticContentAttribute: UISemanticContentAttribute

Not all UI flipsDefault is .UnspecifiedSome UI needs different semantic content attribute for correct layoutAffects resolution of leading and trailing constraints

Page 105: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

ExceptionsSemantic content attributes

UISemanticContentAttribute.Playback

Containers of playback controls, playhead scrubbers, etc.

Page 106: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

ExceptionsSemantic content attributes

UISemanticContentAttribute.Playback

Containers of playback controls, playhead scrubbers, etc.

Page 107: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

ExceptionsSemantic content attributes

UISemanticContentAttribute.Spatial

Groups of controls for manipulating objects or directional input on the screen• Game controllers• Text alignment controls

Page 108: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

ExceptionsSemantic content attributes

UISemanticContentAttribute.Spatial

Groups of controls for manipulating objects or directional input on the screen• Game controllers• Text alignment controls

Page 109: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

ExceptionsSemantic content attributes

Page 110: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

ExceptionsSemantic content attributes

UISemanticContentAttribute.ForceLeftToRight .ForceRightToLeft

Page 111: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

ExceptionsSemantic content attributes

UISemanticContentAttribute.ForceLeftToRight .ForceRightToLeft

Explicitly set the layout direction you want

Page 112: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

ExceptionsSemantic content attributes

UISemanticContentAttribute.ForceLeftToRight .ForceRightToLeft

Explicitly set the layout direction you wantOnly .ForceRightToLeft affects layout in left-to-right localizations

Page 113: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

ExceptionsSemantic content attributes

UISemanticContentAttribute.ForceLeftToRight .ForceRightToLeft

Explicitly set the layout direction you wantOnly .ForceRightToLeft affects layout in left-to-right localizationsCome talk to us in a lab if you want to use these

Page 114: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Best PracticesUser interface and text

Page 115: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Right-to-Left User Interface

Page 116: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Right-to-Left User Interface

Use formatters for region-appropriate formatting

Page 117: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Right-to-Left User Interface

Use formatters for region-appropriate formatting

What’s New in Internationalization Pacific Heights Friday 9:00AM

Page 118: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Right-to-Left User Interface

Use formatters for region-appropriate formattingNever use NSLocale or NSBundle for UI layout branching

Page 119: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Right-to-Left User Interface

Use formatters for region-appropriate formattingNever use NSLocale or NSBundle for UI layout branching

let preferredLang = NSLocale.preferredLanguages().first!if NSLocale.characterDirectionForLanguage(preferredLang) == .RightToLeft { // ... }

Page 120: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Right-to-Left User Interface

Use formatters for region-appropriate formattingNever use NSLocale or NSBundle for UI layout branching

let preferredLang = NSLocale.preferredLanguages().first!if NSLocale.characterDirectionForLanguage(preferredLang) == .RightToLeft { // ... }

Page 121: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Right-to-Left User Interface

Page 122: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Right-to-Left User Interface

class func userInterfaceLayoutDirectionForSemanticContentAttribute( attribute: UISemanticContentAttribute) -> UIUserInterfaceLayoutDirection

Page 123: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Right-to-Left User Interface

class func userInterfaceLayoutDirectionForSemanticContentAttribute( attribute: UISemanticContentAttribute) -> UIUserInterfaceLayoutDirection

For custom UI layout• Do not use to determine regional or formatting settings

Page 124: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Right-to-Left User Interface

class func userInterfaceLayoutDirectionForSemanticContentAttribute( attribute: UISemanticContentAttribute) -> UIUserInterfaceLayoutDirection

For custom UI layout• Do not use to determine regional or formatting settings

let semanticAttr = myView.semanticContentAttribute let layoutDirection = UIView.userInterfaceLayoutDirectionForSemanticContentAttribute(semanticAttr)if layoutDirection == .RightToLeft { // ... }

Page 125: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Right-to-Left User Interface

class func userInterfaceLayoutDirectionForSemanticContentAttribute( attribute: UISemanticContentAttribute) -> UIUserInterfaceLayoutDirection

For custom UI layout• Do not use to determine regional or formatting settings

let semanticAttr = myView.semanticContentAttribute let layoutDirection = UIView.userInterfaceLayoutDirectionForSemanticContentAttribute(semanticAttr)if layoutDirection == .RightToLeft { // ... }

Page 126: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Right-to-Left Text

Page 127: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Right-to-Left Text

Leave alignment and directionality at their default values

Page 128: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Right-to-Left Text

Leave alignment and directionality at their default values• Natural alignment is now default on iOS 9

Page 129: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Right-to-Left Text

Leave alignment and directionality at their default values• Natural alignment is now default on iOS 9• Natural base writing direction is default since iOS 7

Page 130: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Right-to-Left Text

Leave alignment and directionality at their default values• Natural alignment is now default on iOS 9• Natural base writing direction is default since iOS 7

Do not make layout decisions based on the alignment or writing direction

Page 131: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

ExceptionsImages

Page 132: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

ExceptionsImages

Page 133: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

ExceptionsImages

func imageFlippedForRightToLeftLayoutDirection() -> UIImage

Page 134: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

ExceptionsImages

func imageFlippedForRightToLeftLayoutDirection() -> UIImage

Horizontally flips image in a right-to-left context

Page 135: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

ExceptionsImages

func imageFlippedForRightToLeftLayoutDirection() -> UIImage

Horizontally flips image in a right-to-left context• Obeys the UIImageView’s semantic content attribute

Page 136: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

ExceptionsImages

func imageFlippedForRightToLeftLayoutDirection() -> UIImage

Horizontally flips image in a right-to-left context• Obeys the UIImageView’s semantic content attribute

Only for directional images

Page 137: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

ExceptionsImages

func imageFlippedForRightToLeftLayoutDirection() -> UIImage

Horizontally flips image in a right-to-left context• Obeys the UIImageView’s semantic content attribute

Only for directional images• Arrows• Chevrons

Page 138: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

ExceptionsImages

func imageFlippedForRightToLeftLayoutDirection() -> UIImage

Horizontally flips image in a right-to-left context• Obeys the UIImageView’s semantic content attribute

Only for directional images• Arrows• Chevrons

Page 139: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

ExceptionsImages

func imageFlippedForRightToLeftLayoutDirection() -> UIImage

Horizontally flips image in a right-to-left context• Obeys the UIImageView’s semantic content attribute

Only for directional images• Arrows• Chevrons

Page 140: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

ExceptionsImages

func imageFlippedForRightToLeftLayoutDirection() -> UIImage

Horizontally flips image in a right-to-left context• Obeys the UIImageView’s semantic content attribute

Only for directional images• Arrows• Chevrons• Some UI icons

Page 141: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

ExceptionsImages

func imageFlippedForRightToLeftLayoutDirection() -> UIImage

Horizontally flips image in a right-to-left context• Obeys the UIImageView’s semantic content attribute

Only for directional images• Arrows• Chevrons• Some UI icons

Page 142: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

ExceptionsImages

func imageFlippedForRightToLeftLayoutDirection() -> UIImage

Horizontally flips image in a right-to-left context• Obeys the UIImageView’s semantic content attribute

Only for directional images• Arrows• Chevrons• Some UI icons

Page 143: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

ExceptionsImages

func imageFlippedForRightToLeftLayoutDirection() -> UIImage

Horizontally flips image in a right-to-left context• Obeys the UIImageView’s semantic content attribute

Only for directional images• Arrows• Chevrons• Some UI icons

Page 144: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

DemoExceptions and best practices

Page 145: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Conclusion

Page 146: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Summary

Natives of right-to-left languages expect right-to-left UI

Page 147: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Summary

Natives of right-to-left languages expect right-to-left UIPerfect opportunity to add right-to-left localizations

Page 148: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Summary

Natives of right-to-left languages expect right-to-left UIPerfect opportunity to add right-to-left localizationsAPI accessible to non-natives

Page 149: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Summary

Natives of right-to-left languages expect right-to-left UIPerfect opportunity to add right-to-left localizationsAPI accessible to non-nativesReach millions of users in new markets

Page 150: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

More Information

Documentation and VideosInternationalization Guidehttp://developer.apple.com/internationalization/

Technical SupportApple Developer Forumshttp://developer.apple.com/forums

Page 151: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Related Sessions

Mysteries of Auto Layout, Part 1 Presidio Thursday 11:00 AM

Mysteries of Auto Layout, Part 2 Presidio Thursday 1:30 PM

What’s New in Internationalization Pacific Heights Friday 9:00 AM

Cocoa Touch Best Practices Presidio Friday 1:30 PM

Page 152: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Labs

Interface Builder and Auto Layout Lab Developer Tools Lab C Now

Internationalization Lab Frameworks Lab A Friday 11:00 AM

Page 153: New UIKit Support for International User Interfaces · 2016-07-08 · International User Interfaces Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization

Recommended