Share E-Book
Scan to open this page

Scan with your phone to open this page

Author: Marin Bencevic, Nick Bonatsakis, Andy Pereira, the raywenderlich Tutorial Team

Rating No ratings yet

Run iOS apps natively on macOS with Catalyst! Catalyst by Tutorials shows you how to take all of those great apps you’ve build on iOS and run them right on macOS. But like everything else with Apple, it’s not always as straightforward as you’d like it to be. This book will show you how to design your apps to work well on macOS, what you can and can’t port between the two platforms, and any other “gotchas” to keep an eye out for when building apps under Catalyst. This book is for developers who have a good handle on building iOS apps and want to learn how to port those apps to run on macOS as well.

AI Reading Assistant

Whole-book reading guide from stratified index samples; jump to passages in the text

AI guide
【One-Line Pitch】 A practical, project-driven guide to bringing an existing iPad app to macOS with Mac Catalyst, covering the full path from iPhone-to-iPad polish through Mac-specific UI work to App Store and independent distribution. Best for iOS developers who already ship UIKit apps and want a Mac version without maintaining a separate AppKit codebase. 【Book Arc】 - **Opening (~0%–15%)**: Frames what Catalyst is, why only iPad apps qualify, and which apps should (or shouldn't) be ported; sets up tooling, sample project, and expectations. - **Early (~15%–35%)**: Section I begins by taking an iPhone-only app and making it a genuine iPad app — enabling iPad support, fixing layout and navigation, and adding iPad-era capabilities that later benefit the Mac build. - **Middle (~35%–55%)**: The first Catalyst milestone: checking "Optimize Interface for Mac," configuring bundle IDs and signing, and running the app on a real Mac to see what comes free versus what still needs work. - **Late (~55%–85%)**: Deepens the Mac experience — multi-window support, split-view navigation, extended drag-and-drop, keyboard shortcuts, contextual menus, preferences, and toolbar/menu bar/Touch Bar refinement. - **Ending (~85%–100%)**: Moves from building to shipping: packaging and distributing the Catalyst app through the Mac App Store and independently. (Excerpts do not cover the exact chapter-level breakdown of this final section.) 【Key Takeaways】 - **Catalyst is iPad-first, not iPhone-first** (Early): Apple requires an app to support iPad before it can run on macOS, because iPad apps already handle larger displays, keyboards, and multi-window behavior. This reframes the whole migration as a two-step journey. - **"Make a great iPad app first" is the book's core thesis** (Early): The more your app behaves like a first-class iPad citizen, the smoother the Mac transition — iPad improvements pay off twice. - **The checkbox gets you surprisingly far, but not far enough** (Middle): Enabling Mac support immediately yields menu bar, mouse/trackpad/keyboard input, window resizing, scroll bars, copy-paste, basic drag-and-drop, and Touch Bar support — yet the result still feels like a port, not a Mac app. - **Not every app is a Catalyst candidate** (Early): Apps deeply tied to mobile hardware (e.g., ARKit), apps already built on cross-platform engines like Unity, and apps with well-maintained AppKit versions may not benefit. - **UIKit-to-AppKit gaps require deliberate substitution** (Early): Controls like `UITabBar` have no direct Mac equivalent; the book shows replacing them with Mac-idiomatic alternatives such as toolbar-based navigation. - **Signing and bundle identity differ on Mac** (Middle): Running on a real Mac requires code signing and a distinct macOS bundle identifier, unlike simulator-only iOS runs. - **Polish is the real work** (Middle/Late): Multi-window support, split views, richer drag-and-drop, keyboard shortcuts, contextual menus, and a preferences window are what separate a checkbox port from a genuine Mac experience. - **Distribution is part of the port** (Ending): The book closes the loop by covering both Mac App Store submission and independent distribution. 【Reading Tips】 - Read linearly if you're starting from an iPhone-only app; the iPad section is not skippable even if you think you already have a good iPad app, since Apple added iPad capabilities alongside Catalyst. - If you already have a strong iPad app, you can jump to the Mac section — but skim Section I first to catch unfamiliar iPad APIs. - Deep-read the chapters on navigation structure, multi-window, and menus/toolbars; these are where Catalyst apps most often feel "wrong" on Mac. - Treat the sample app (Journalyst) as a lab: reproduce each change in your own project rather than reading passively. - Pay close attention to the signing/bundle-ID chapter before attempting to run on a real Mac — it's a common early stumbling block. 【Coverage Limits】 This guide is synthesized from stratified excerpts covering roughly the first half of the book in detail, with lighter coverage of the later Mac-polish and distribution chapters. Specific chapter titles, code listings, and the exact structure of the final section are not fully represented in the excerpts.
Excerpt 1
About the Authors Marin Benčević is an author of this book. He is an image processing researcher as well as an iOS developer who likes to work on cool iOS ap...
View in text
Excerpt 2
e a good idea to review the first section before proceeding. Catalyst If you've made it this far, you likely know what Catalyst is. But in case you need...
View in text
Excerpt 3
'll be interacting with for the remainder of this book. Once you familiarize yourself with the basic functionality and architecture, you'll take yo...
View in text
Excerpt 4
rag-and-drop support. Support for system Touch Bar controls. But it's not all rainbows and checkboxes at this point — there's still a lot of work y...
View in text
Excerpt 5
onController = splitViewController.viewControllers.last as ? UINavigationController , let topViewController = splitNavigationController.topViewController as...
View in text
Excerpt 6
dropping photos into the app! Open EntryTableViewController.swift and at the bottom of viewDidLoad add the following code: let interaction = UIDropInteractio...
View in text
Excerpt 7
hod: // 1 coordinator.session.loadObjects(ofClass: UIImage . self ) { [ weak self ] imageItems in guard let self = self else { return } if let images = image...
View in text
Excerpt 8
enable basic multi-window support in Xcode and in your app. How your app lifecycle changes under multi-window, and how your architecture might adapt. How to...
View in text
Tags
AI categories
ProgrammingMobileSoftware
ISBN: 1950325318
Publish Year: 2020
Language: English
Pages: 221
File Format: EPUB
File Size: 23.4 MB