Coder Social home page Coder Social logo

maximtart / awesomespotlightview Goto Github PK

View Code? Open in Web Editor NEW

This project forked from aleksandrshoshiashvili/awesomespotlightview

0.0 0.0 0.0 2.55 MB

Awesome tool for create tutorial walkthrough or coach tour

License: MIT License

Swift 76.83% Ruby 5.04% Objective-C 18.13%

awesomespotlightview's Introduction

Platform: iOS 9+ Language: Swift 5 Cocoapods compatible Swift Package Manager compatible License: MIT

AwesomeSpotlightView is a nice and simple library for iOS written on Swift 5. It's highly customizable and easy-to-use tool. Works perfectly for tutorial or coach in your app.

icon

icon

Example

To run the example project, clone the repo, and run pod install from the Example directory first.

Swift Example

ObjC Example

Installation

CocoaPods

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

pod 'AwesomeSpotlightView'

Swift Package Manager (SPM)

To install AwesomeSpotlightView using Swift Package Manager add

.package(name: "AwesomeSpotlightView", url: "https://github.com/aleksandrshoshiashvili/AwesomeSpotlightView.git", from: "0.1.15"),"

to your Package.swift, then follow the integration tutorial here.

Manually

  • Just drop AwesomeSpotlightView folder in your project.
  • You're ready to use AwesomeSpotlightView!

Usage

override func viewDidLoad() {
    super.viewDidLoad()
    let spotlight1 = AwesomeSpotlight(withRect: CGRect(x: 75, y: 75, width: 100, height: 100), shape: .circle, text: "spotlight1", isAllowPassTouchesThroughSpotlight: true)
    let spotlight2 = AwesomeSpotlight(withRect: CGRect(x: 20, y: 200, width: 130, height: 25), shape: .rectangle, text: "spotlight2")
    let spotlight3 = AwesomeSpotlight(withRect: CGRect(x: 170, y: 50, width: 30, height: 100), shape: .roundRectangle, text: "spotlight3")
    
    let spotlightView = AwesomeSpotlightView(frame: view.frame, spotlight: [spotlight1, spotlight2, spotlight3])
    spotlightView.cutoutRadius = 8
    spotlightView.delegate = self
    view.addSubview(spotlightView)
    spotlightView.start()
}

You can configure AwesomeSpotlightView before you present it using the start method. For example:

spotlightView.continueButtonModel = AwesomeTabButton(title: "Next", font: UIFont.italicSystemFont(ofSize: 16.0), isEnable: true)
spotlightView.skipButtonModel.isEnable = true
spotlightView.skipButtonLastStepTitle = "Finish"
spotlightView.showAllSpotlightsAtOnce = false
spotlightView.start()

Configuration AwesomeSpotlight

rect (CGRect)

The rect of spotlight.

shape (AwesomeSpotlightShape)

Shape of spotlight: .rectangle, .roundRectangle, .circle.

margin (UIEdgeInsets)

Margin for cutout shape. You can set extra space for item with this property.

isAllowPassTouchesThroughSpotlight (Bool)

Set true if you want to allow pass touches through spotlight (allow interaction with view below spotlight) (default: false).

text (String)

The text of the caption.

attributedText (AttributedString)

The attributed text of the caption.

Configuration AwesomeSpotlightView

spotlightsArray ([AwesomeSpotlight])

Modify the spotlights.

spotlightMaskColor (UIColor)

The color of the mask (default: 0,0,0 alpha 0.6).

animationDuration (Double)

Transition animation duration to the next coach mark (default: 0.3).

cutoutRadius (CGFloat)

The cutout rectangle radius (default: 4.0).

maxLabelWidth (Double)

The captions label is set to have a max width of 280px. Number of lines is figured out automatically based on caption contents.

labelSpacing (CGFloat)

Define how far the captions label appears above or below the cutout (default: 35px).

enableArrowDown (Bool)

Icon with Arrow showed between caption text and caption (default: false).

textLabelFont (UIFont)

Fond of caption text label (default: UIFont.systemFont(ofSize: 20.0)).

showAllSpotlightsAtOnce (Bool)

Showed all spotlight at once (at the same time) (default: false).

skipButtonLastStepTitle (String)

This title will show in skip button when user did open last spotlight. (default: Done)

continueButtonModel (AwesomeTabButton)

skipButtonModel (AwesomeTabButton)

You can setup buttons with AwesomeTabButton structure: title, font, backgroundColor and isEnable state.

Default for continueButtonModel: title: "Continue", font: UIFont.boldSystemFont(ofSize: 13.0), isEnable: false

Default for skipButtonModel: title: "Skip", font: UIFont.boldSystemFont(ofSize: 13.0), isEnable: false

AwesomeSpotlightViewDelegate

1. Conform your view controller to the AwesomeSpotlightViewDelegate protocol:

class ViewController: UIViewController, AwesomeSpotlightViewDelegate

2. Assign the delegate to your AwesomeSpotlightView view instance:

spotlightView.delegate = self

3. Implement the delegate protocol methods:

Note: All of the methods are optional. Implement only those that are needed.

  • func spotlightView(_ spotlightView: AwesomeSpotlightView, willNavigateToIndex index: Int)
  • func spotlightView(_ spotlightView: AwesomeSpotlightView, didNavigateToIndex index: Int)
  • func spotlightViewWillCleanup(_ spotlightView: AwesomeSpotlightView, atIndex index: Int)
  • func spotlightViewDidCleanup(_ spotlightView: AwesomeSpotlightView)

Inspired by

Author

awesomespotlightview's People

Contributors

aleksandrshoshiashvili avatar ergunkocak avatar fromf avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.