Coder Social home page Coder Social logo

carabina / popupwindow Goto Github PK

View Code? Open in Web Editor NEW

This project forked from shin8484/popupwindow

0.0 1.0 0.0 80.32 MB

PopupWindow is a simple Popup using another UIWindow in Swift

License: MIT License

Ruby 4.88% Swift 91.42% Objective-C 3.69%

popupwindow's Introduction

PopupWindow

Version License Carthage compatible Platform

image

PopupWindow is a simple Popup using another UIWindow

Feature

  • PopupWindow can be displayed at the top or bottom of the screen.
  • Popup can set margins, cornerRadius, blur, etc.
  • When displaying blur, you can't touch the below contents.
  • By erasing blur, you can touch the below contents.
  • Popup are displayed on another window, so you can leave Popup even when screen transitions.
TopToast BottomToast TopCard BottomCard Example
demo_01 demo_02 demo_03 demo_04 demo_05

Installation

CocoaPods

Add PopupWindow to your Podfile:

pod 'PopupWindow'

Carthage

Add PopupWindow to your Cartfile:

github "shin8484/PopupWindow"

Usage

When displaying popup in another window, please call first PopupWindowManager changeKeyWindow(rootViewController: UIViewController)

PopupWindowManager.shared.changeKeyWindow(rootViewController: UIViewController())

Create and show show

Create a PopupItem in the VC where you want to display the popup and call the method of the PopupPresentable protocol

var popupItem: PopupItem = PopupItem(view: LoginView.view(),
                                     frame: Const.firstViewFrame,
                                     type: .rounded(cornerSize: 4),
                                     direction: .top,
                                     margin: 8,
                                     hasBlur: true)

// Methods in PopupPresentable
setupPopupContainerView()
makePopupView(with: popupItem)
showPopupView(duration: Const.popupDuration, curve: .easeInOut, delayFactor: 0.0)

Transform & Replace

Replace the display contents, and perform deformation to the specified size. By using PopupItem, you can specify content contents and size.

transformPopupView(duration: Const.transformDuration, curve: .easeInOut, popupItem: popupItem) { [weak self] _ in
    guard let me = self else { return }
    me.replacePopupView(with: popupItem)
    me.dismissPopupView(duration: 3.3, curve: .easeInOut, delayFactor: 0.9, direction: .top) { _ in }
}

Dismiss

Specify hide animation direction with PopupViewDirection

dismissPopupView(duration: 3.3, curve: .easeInOut, delayFactor: 0.9, direction: .bottom) { _ in
    PopupWindowManager.shared.changeKeyWindow(rootViewController: nil)
}

PopupItem

PopupItem is struct to set up a popup, View, size, direction, whether it is rounded, margin, blurred or not

struct PopupItem {
    public let view: UIView
    public let frame: CGRect
    public let type: PopupViewType
    public let direction: PopupViewDirection
    public let margin: CGFloat
    public let hasBlur: Bool
}

Requirements

  • iOS 10.0+
  • Xcode 9.1+
  • Swift 3.0.1+

LICENSE

Under the MIT license. See LICENSE file for details.

popupwindow's People

Contributors

shin8484 avatar

Watchers

Carabineiro 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.