SuggestionsKit

SuggestionsKit is a framework for iOS that was created in order to provide developers with the opportunity to educate users on various features of applications.

68747470733a2f2f692e696d6775722e636f6d2f5a39536678694f2e676966

Requirements

  • Xcode 11 / Swift 5+
  • iOS 9.0+

Features

  • Easy to use in project
  • Nice looking animations
  • Supports device rotations
  • Supports navigation items and tab bar items
  • Supports view resizing and changing of position via observation
  • Customizable settings

Usage

Import SuggestionsKit

import SuggestionsKit

Next you need to create one or more suggestions. Simple init method takes UIVIew, CGRect , String and NSAttributedString as arguments.

let frameSuggestion2 = Suggestion(frame: .init(x: 100, y: 100, width: 200, height: 200), attributedText: attributedString)

If you pass attributedText then text is ignored and if you pass view then frame ignored too.
If you pass attributedText then textColor and font from SuggestionsConfig.TextConfig is ignored

After you just call apply method of SuggestionManager class

SuggestionsManager.apply(suggestions)

Optionaly you could call configre method to setup suggestions which will presented to user. If this method will not be called then default configuration will be used

SuggestionsManager.apply(suggestions)
    .configre(config)

And you are done! Next step is just call startShowing method to start showing suggestions.

SuggestionsManager.apply(suggestions)
    .configre(config)
    .startShowing()

If suggestions ended whole view will dissapear automaticaly.
If you want to stop process manualy simply call stopShowing method of SuggestionManager class

SuggestionsManager.stopShowing()

If you want to be notified when suggestion come to an end just call completion method of SuggestionManager that takes void closure as an argument

SuggestionsManager.apply(suggestions)
    .configre(config)
    .startShowing()
    .completion {
        print("suggestions finished")
    }

Additionally you could create suggestion from tabBarController.tabBar or navigationController.navigationBar with help of SuggestionsHelper class

let tabBarItems = SuggestionsHelper.findAllBarItems(in: tabBarController?.tabBar)
suggestions += tabBarItems.enumerated()
    .map { Suggestion(view: $0.element, text: "Tab bar item \($0.offset)") }
    
let navItems = SuggestionsHelper.findAllBarItems(in: navigationController?.navigationBar)
let navSuggestions = navItems.enumerated()
    .map { Suggestion(view: $0.element, text: $0.offset == 0 ? "back button" : "bar button item") }
suggestions += navSuggestions

Please keep in mind that this functionality is implemented using recursive search of visual elements and may be broken in future versions of iOS
This method does not use private properties for searching

Example

To run the example project, clone the repo, open the SuggestionsKit.xcworkspace workspace, then select target SuggestionsKit-Example and you are ready to test the example

Installation

CocoaPods

SuggestionsKit is available through CocoaPods. To install
it, simply add the following line to your Podfile:

pod 'SuggestionsKit'

Swift Package Manager

dependencies: [.package(url: "https://github.com/huemae/SuggestionsKit", Package.Dependency.Requirement.branch("master"))]

Author

huemae

GitHub

https://github.com/huemae/SuggestionsKit