let’s dev GmbH & Co. KG - The brand for groundbreaking custom software

Blog

Top!

let’s dev | Scroll to top
let’s dev | Scroll to next content item

Hello

let’s dev | Scroll to previous content item
let’s dev Blog | Apple WWDC 2019: These are the highlights of the keynote
by Nicolas
05. Juni 2019

Apple WWDC 2019: These are the highlights of the keynote

The keynote of Apple's annual developer conference lasted almost two and a half hours this year - and they had it all. For developers of Apple platforms, the keynote brought probably the biggest changes since the presentation of Swift in 2014.

Dark Mode

No big surprise was the presentation of the system-wide Dark Mode. As it has been possible in macOS since Mojave, iOS can also be given a dark appearance from now on. Depending on the user's settings, the apps should of course also reflect the configured settings.

The new semantic colors of UIColor make it very easy for developers to support dark mode. For example, colors for light and dark appearance can be defined for UIColor.label, UIColor.secondaryLabel, UIColor.systemBackground and many more standard elements. When developing the views, care should then be taken not to use explicit colors such as UIColor.red, but instead to use the semantic colors described earlier. A middle way offers the use of standard colors, but then UIColor.systemRed should be used instead of UIColor.red, because here at least the color tone adapts somewhat to the current appearance.

If there are certain reasons, it is also possible to always use Light or Dark Mode in certain areas of the app. This can be configured in each UIViewController.

iPad OS

The introduction of iPadOS offers a big change. While the iOS operating system previously included both iPhone and iPad, there is now a dedicated name for the operating system of Apple's tablets. Even though it is more of a marketing name - iOS still runs under the hood - some innovations have been introduced that will please Pro users.

Probably the biggest new feature for iPad users is the revamped multitasking. Developers are challenged by the ability to have multiple windows of the same app open side by side. The new classes UIScene, UIWindowScene as well as the UIWindowSceneDelegate play a major role in this. If the user opens several windows of an app, each is referred to as a scene, but all windows still use the same AppDelegate. A SceneDelegate is responsible for each scene, and Xcode 11 generates a SceneDelegate in addition to the AppDelegate in a new project.

An interesting feature that went unmentioned in the keynote is the ability to control the iPad with a mouse. The configuration is possible via the Operating Aids menu in the settings.

Project Catalyst

At the end of the keynote, Apple provided great innovations and opportunities for developers. On the one hand, Project Catalyst was shown, which was already announced last year and was previously known under the codename Marzipan. This should now make it possible to port iOS apps to the Mac.

In the Xcode 11 beta version, it is possible to specify that an app should be available for macOS in addition to iPhone and iPad. Merely checking the box should thus already bring a native app experience to the Mac. All code of the existing iOS app is ported to the Mac and can then be refined for an optimal Mac experience. In any case, Catalyst offers great potential, Twitter and Atlassian (Jira) among others, announced that they would bring their existing iOS apps to the Mac.

Swift UI

Apple finally caused great astonishment with its last announcement of the evening. With SwiftUI a completely new framework was presented that is supposed to make it much easier to define user interfaces for all platforms.

SwiftUI

Figure 1: Example for the setup of a table with SwiftUI

Apple has already provided some Tutorials und Ressourcen for the new UI framework. Among them, there is also a Tutorial on how SwiftUI can interact with UIKit.

It is interesting to note that SwiftUI is not just a simple abstraction layer to UIKit. In one of Apple's test projects, developer Adam Bell was able to determine that a UILabel was not simply used for the displayed text. Instead, it is simple UIViews/CALayers.

However, SwiftUI requires the latest versions of the Apple platforms and is therefore not interesting for many developers at this point, since the principle here is usually to support the two most current versions, for iOS this would be iOS 13 and iOS 12. However, the potential is great and the planned WWDC sessions this week should provide even more insight into what is possible with the new UI framework. Projects created in Xcode 11 are at least already generated without Main.storyboard.

More new frameworks

In addition to SwiftUI, several other new frameworks for developers were introduced. One of them is the framework Combine, which could possibly be called Apple's answer to RxSwift and similar frameworks from the field of reactive programming. This is intended to simplify the handling of asynchronous events, which makes techniques such as data binding easy. This allows, for example, user interface views to be automatically updated when something changes in the data source.

The Framework BackgroundTasks is supposed to make it possible to execute tasks in the background. This is to ensure that the app's content is kept up to date and to execute tasks that sometimes take over minutes.

Apple CryptoKit offers new possibilities to execute operations securely and efficiently. Like SwiftUI, all of the above frameworks can only be used from the latest versions of all Apple platforms.

All other new frameworks can be found here.

SF Symbols

With SF Symbols, Apple offers over 1000 icons and symbols that can be used from the latest versions iOS 13, watchOS 6 and tvOS 13. It is somewhat surprising that macOS 10.15 is not mentioned in the Documentation.

SF Symbols App

Figure 2: SF Symbols App (macOS Mojave 10.14.4 and later)

Each icon comes in three sizes (small, medium and large) and can also be exported as a template vector graphic to modify for your own purposes. For the use of SF Symbols there is a new UIImage initializer UIImage(systemName:), in which the name of the desired symbol must be passed as a string. For macOS (10.14.4+) there is also an SF Symbols app where all icons can be viewed. This can be downloaded from the documentation page.

Xcode 11

The new version of Apple's development environment offers direct integration of the Swift Package Manager. GitHub repositories can be easily added as a dependency in a project, making the Swift Package Manager an interesting alternative to the existing dependency managers CocoaPods and Carthage.

Furthermore, a small map has been integrated into Xcodes Editor on the right side, which serves as an orientation at which point of the code you are currently located. This feature already exists in well-known editors such as Sublime Text and can be seen in the image on the right. Comments in Xcode now support rich text and can therefore display parts in bold or italics, for example.

Apple provided many interesting innovations at the WWDC keynote, first and foremost Project Catalyst and the new SwiftUI framework. It is a bit of a shame that most of the innovations require the latest versions of all platforms, which still makes it difficult for productive use if you do not want to exclude all users of older versions.

Yesterday evening also offered much more than was pointed out in this article and thus enough exciting news. Finally, it should be said that Apple explicitly points out under the disclaimer „Important Note for Thrill Seekers“ that the first beta version is only intended for developers, which is also reflected in the Release Notes.

More articles from our blog

let’s dev Blog | Smart Prognosis of Energy with Allocation of Resources

Corporate

Smart Prognosis of Energy with Allocation of Resources

by Karl

2021-02-18

Read more
let’s dev Blog | Dasoman - Data-Sovereignty-Manager

Corporate

Dasoman - Data-Sovereignty-Manager

by Karl

2021-01-11

Read more
let’s dev Blog | We look back on the past months - And wish all the best for the coming year 2021!

Corporate

We look back on the past months - And wish all the best for the coming year 2021!

by Julian

2020-12-17

Read more
let’s dev Blog | iOS User Interface Tests

Technical

iOS User Interface Tests

by Nicolas

2020-11-12

Read more
let’s dev Blog | Adobe Max - Online for the first time

Corporate

Adobe Max - Online for the first time

by Julia

2020-10-29

Read more
let’s dev Blog | CAN2BLE

Technical

CAN2BLE

by Raphael

2020-09-24

Read more
let’s dev Blog | Mensch und Computer 2020 - Digital Change in the Flow of Time

Corporate

Mensch und Computer 2020 - Digital Change in the Flow of Time

by UX Team

2020-09-18

Read more
let’s dev Blog | Neumorphism – A new era of user interface design?

Technical

Neumorphism – A new era of user interface design?

by Julian

2020-08-13

Read more
let’s dev Blog | UX Research Part 3 - UX Methods

Technical

UX Research Part 3 - UX Methods

by Elena

2020-05-28

Read more
let’s dev Blog | UX Research Part 2 - What is UCD and what does User Research have to do with it?

Technical

UX Research Part 2 - What is UCD and what does User Research have to do with it?

by Elena

2020-04-23

Read more
let’s dev Blog | go-digital promotes establishment of home office workstations

Corporate

go-digital promotes establishment of home office workstations

by Karl

2020-03-19

Read more
let’s dev Blog | Google Passes - Card Management on Android Devices

Technical

Google Passes - Card Management on Android Devices

by Michelle

2020-03-12

Read more
let’s dev Blog | 100% code coverage in software testing - a reasonable goal?

Technical

100% code coverage in software testing - a reasonable goal?

by Raphael

2020-03-06

Read more
let’s dev Blog | Swift UI - Simple and fast implementation of user interfaces

Technical

Swift UI - Simple and fast implementation of user interfaces

by Tobias

2020-03-02

Read more
let’s dev Blog | In dialog with the business juniors - Exciting insights into business start-ups and digital transformation

Corporate

In dialog with the business juniors - Exciting insights into business start-ups and digital transformation

by Julian

2020-02-27

Read more
let’s dev Blog | Simplified testing of iOS push notifications in the simulator with Xcode 11.4

Technical

Simplified testing of iOS push notifications in the simulator with Xcode 11.4

by Manuel

2020-02-26

Read more
let’s dev Blog | National meeting of the consortium of the SPEAR research project at let's dev in Karlsruhe

Corporate

National meeting of the consortium of the SPEAR research project at let's dev in Karlsruhe

by Karl

2020-01-27

Read more
let’s dev Blog | UX Research Part 1 - Why User Research is so important

Technical

UX Research Part 1 - Why User Research is so important

by Elena

2020-01-23

Read more
let’s dev Blog | Dark Mode

Technical

Dark Mode

by Elisa

2020-01-09

Read more
let’s dev Blog | We wish you a Merry Christmas - And a Happy New Year!

Corporate

We wish you a Merry Christmas - And a Happy New Year!

by Julian

2019-12-20

Read more
let’s dev Blog | Exchange on the topic of digitization with the Business Club Luxembourg at the Embassy of Luxembourg in Berlin

Corporate

Exchange on the topic of digitization with the Business Club Luxembourg at the Embassy of Luxembourg in Berlin

by Karl

2019-12-17

Read more
let’s dev Blog | DaSoMan at the Internet+ Expo in Foshan (China)

Corporate

DaSoMan at the Internet+ Expo in Foshan (China)

by Karl

2019-12-13

Read more
let’s dev Blog | Google Play Console: Pre-Launch Reports

Technical

Google Play Console: Pre-Launch Reports

by Fabian

2019-12-11

Read more
let’s dev Blog | DevFest 2019 in Hamburg

Technical

DevFest 2019 in Hamburg

by Julian

2019-12-05

Read more
let’s dev Blog | Vernissage digital art in the media theater of the Humboldt University Berlin

Corporate

Vernissage digital art in the media theater of the Humboldt University Berlin

by Karl

2019-11-21

Read more
let’s dev Blog | World Usability Day 2019 in Karlsruhe - let's dev supports as main sponsor

Corporate

World Usability Day 2019 in Karlsruhe - let's dev supports as main sponsor

by Aileen

2019-11-11

Read more
let’s dev Blog | Gutted - Open Day at the Alter Schlachthof Karlsruhe 2019

Corporate

Gutted - Open Day at the Alter Schlachthof Karlsruhe 2019

by Julian

2019-09-26

Read more
let’s dev Blog | Mensch und Computer 2019 - Conference on User Experience and Usability in Hamburg

Corporate

Mensch und Computer 2019 - Conference on User Experience and Usability in Hamburg

by Elena

2019-09-17

Read more
let’s dev Blog | Business and Enterprise App Distribution on iOS

Technical

Business and Enterprise App Distribution on iOS

by Aileen

2019-08-05

Read more
let’s dev Blog | Digital Transformation - Chances and Challenges in the Automotive Industry, Agriculture and New Technologies

Corporate

Digital Transformation - Chances and Challenges in the Automotive Industry, Agriculture and New Technologies

by Karl

2019-07-17

Read more
let’s dev Blog | let's dev supports runners at the 7th KIT Championship

Corporate

let's dev supports runners at the 7th KIT Championship

by Karl

2019-07-05

Read more
let’s dev Blog | Automated testing of C++ code with Google Test and Google Mock - Part 2

Technical

Automated testing of C++ code with Google Test and Google Mock - Part 2

by Arne

2019-06-13

Read more
let’s dev Blog | App Builders 2019

Technical

App Builders 2019

by Nicolas

2019-05-23

Read more
let’s dev Blog | Official opening of the Consolidation and Expansion Center (FUX)

Corporate

Official opening of the Consolidation and Expansion Center (FUX)

by Helena

2019-04-15

Read more
let’s dev Blog | Delegation from Nottingham to visit the Alter Schlachthof in Karlsruhe

Corporate

Delegation from Nottingham to visit the Alter Schlachthof in Karlsruhe

by Helena

2019-04-14

Read more
let’s dev Blog | The time has come: We are moving!

Corporate

The time has come: We are moving!

by Helena

2019-03-26

Read more
let’s dev Blog | Automated testing of C++ code with frameworks - part 1

Technical

Automated testing of C++ code with frameworks - part 1

by Arne

2019-02-20

Read more
let’s dev Blog | The app in the Google Play Store

Technical

The app in the Google Play Store

by Elisa

2019-01-24

Read more
let’s dev Blog | „UX Day“ 2018

Corporate

„UX Day“ 2018

by Aileen

2018-12-17

Read more
let’s dev Blog | let's dev supports SG Siemens volleyball players from Karlsruhe

Corporate

let's dev supports SG Siemens volleyball players from Karlsruhe

by Helena

2018-12-04

Read more
let’s dev Blog | SMEs shape digitalization - SME Conference 2018

Corporate

SMEs shape digitalization - SME Conference 2018

by Helena

2018-11-12

Read more
let’s dev Blog | Apple Wallet

Technical

Apple Wallet

by Maik

2018-10-26

Read more
let’s dev Blog | „Mensch und Computer“ 2018

Corporate

„Mensch und Computer“ 2018

by Judith

2018-09-24

Read more
let’s dev Blog | State Design Pattern in Android

Technical

State Design Pattern in Android

by Thomas

2018-09-17

Read more
let’s dev Blog | let's dev is an authorized consulting company in the „go-digital“ funding program

Corporate

let's dev is an authorized consulting company in the „go-digital“ funding program

by Helena

2018-09-01

Read more
let’s dev Blog | App Design & Development Conference 2018

Corporate

App Design & Development Conference 2018

by Helena

2018-08-14

Read more
let’s dev Blog | iOS 12: The top new features at a glance

Technical

iOS 12: The top new features at a glance

by Nicolas

2018-07-17

Read more
let’s dev Blog | let's dev at CEBIT

Corporate

let's dev at CEBIT

by Karl

2018-06-11

Read more
let’s dev Blog | Introduction to User Interface (UI) Testing with Espresso

Technical

Introduction to User Interface (UI) Testing with Espresso

by Raphael

2018-06-07

Read more
let’s dev Blog | The app in the Apple App Store: what information is needed?

Technical

The app in the Apple App Store: what information is needed?

by Aileen

2018-04-27

Read more
let’s dev Blog | Smart Pointer in C++

Technical

Smart Pointer in C++

by Matthias

2018-04-01

Read more
let’s dev Blog | User interface design for iPhone X: all innovations at a glance

Technical

User interface design for iPhone X: all innovations at a glance

by Helena

2018-02-07

Read more
let’s dev Blog | WebVR - Virtual Reality Experience in the Browser with the A-Frame Framework

Technical

WebVR - Virtual Reality Experience in the Browser with the A-Frame Framework

by Judith

2018-01-10

Read more
let’s dev Blog | Deutsche Bahn Open Data Hackathon

Corporate

Deutsche Bahn Open Data Hackathon

by Karl

2015-03-31

Read more
let’s dev Blog | Blur effects under iOS 7

Technical

Blur effects under iOS 7

by Katja

2014-04-24

Read more
let’s dev Blog | Beyond App Store - iOS application distribution

Technical

Beyond App Store - iOS application distribution

by Karl

2012-08-27

Read more
let’s dev Blog | Front-end architecture - Model View Presenter and Message Bus

Technical

Front-end architecture - Model View Presenter and Message Bus

by Karl

2011-03-08

Read more