Tutti is a Swift library that helps you create onboarding expericences, like quick hints and single- or multi-screen tutorials.
Tutti will only display a hint/tutorial once by default. You can reset the display state of a hint/tutorial if you want to display it multiple times.
Tutti also supports user-specific hints/tutorials. Just set the
userId parameter and Tutti will display the hint/tutorial once for every new user.
The easiest way to add Tutti to your project is to use Swift Package Manager:
To manually add
Tutti to your app without a dependency manager, clone this repository, add
Tutti.xcodeproj to your project and
Tutti.framework as an embedded app binary and target dependency.
This repository contains a demo app that demonstrates different types of hints and tutorials. To try it out, open and run the
Tutti comes with a set of built-in hint types that can be used for different purposes.
StandardHint- A basic hint with no specific behavior.
DeferredHint- Requires a certain number of presentation attempts before it is presented.
CorrectBehaviorHint- Can be used to show a hint when a user is not behaving as intended.
You can also create your own custom hint types by implementing the
Check out this guide for more information on how to create and present hints.
Tutti comes with a set of built-in tutorial types that can be used for different purposes.
StandardTutorial- A basic tutorial with no specific behavior.
DeferredTutorial- Requires a certain number of presentation attempts before it is presented.
CorrectBehaviorTutorial- Can be used to show a tutorial when a user is not behaving as intended.
You can also create your own custom tutorial types by implementing the
Check out this guide for more information on how to create and present tutorials.
I hope you like this library. Feel free to reach out if you have questions or if you want to contribute in any way:
Tutti is available under the MIT license. See LICENSE file for more info.
You may find interesting
- 2019-09-25 09:00:56
This version makes Package use https references instead of ssh.
- 2019-09-16 09:21:38
This version adds Xcode 11 and iOS 13 support, including support for dark mode and high contrast color variants.
- 2019-03-26 12:49:20
This version upgrades Tutti to Swift 5. The version contains no breaking changes.
- 2018-12-14 08:06:41
In 1.5.0, I added a new way of bumping the build number, by using a time stamp instead of an incremental step. However, the first time I use this, it sets the "library version" flag, for which this format is invalid. This happened in
1.5.0, which meant that it could not be installed with Carthage, nor built in Xcode. This version fixes this error.
- 2018-12-14 08:04:28
This version has new hint and tutorial types. The
CorrectBehaviorOnboarding is an onboarding experience that is triggered when a user performs a certain number of incorrect actions.
CorrectBehaviorTutorial can be used to build user behavior-based onboarding experiences. There are, however, no demos for these new classes yet.
This version includes a bug fix by @sebbo176, that makes sure that callout hints are presented using the correct superview. This solves a problem where hints did remain on screen even when the main view controller changed.
This version has some breaking changes:
DeferredHintprotocol is removed and the
StandardDeferredHinthas been renamed to
DeferredHint. This makes the class hierarchy a lot easier to manage.
DeferredTutorialprotocol is removed, and the
StandardDeferredTutorialhas been renamed to
DeferredTutorial, just as the hints above.
LocalizedTutorialclass has been removed. Instead, this functionality is now accessible by using a new
- 2018-10-04 11:43:15
This version removes presentation logic from hints/tutorials to their presenters. Instead of calling
present on your hints and tutorials, now use the presenters.
The presenter protocols have also been refactored. The first parameter names are now implicit.
HintPresenter now has a
dismissAllHints() function. It's implemented by some of the presenters, where applicable.
- 2018-10-04 11:35:06
This version extends the
HintPresenter protocols to make presenting a hint from a
UIBarButtonItem possible. If you have any custom implementations of these protocols, you must extend them.
CalloutHintPresenter has been improved, so that it can dismiss presented hints. This fixes issue #3.