Home

Awesome

<p align="center"> <img src="LCUIComponents/Sample/Resources/img_lc_logo.png" /> </br></br> <img src="https://travis-ci.org/linhcn/LCUIComponents.svg?branch=master" /> <img src="https://cocoapod-badges.herokuapp.com/v/LCUIComponents/badge.png" /> <img src="https://cocoapod-badges.herokuapp.com/p/LCUIComponents/badge.png" /> <img src="https://cocoapod-badges.herokuapp.com/l/LCUIComponents/badge.png" /> </p>

Overview

LCUIComponents is an on-going project, which supports creating transient views appearing above other content onscreen when a control is selected. Currently, the framework provides supports to simply create a customisable popover with a selectable data list.

<p align="center"><img src="LCUIComponents/Sample/Resources/img_popover_preview.gif" width="220" /></p>

Requirements

Usage

The following is an example of how to create a popover. For more advanced use please check out the Sample path.

Set up a basic popover with data list

import LCUIComponents
import UIKit

class PopoverSamplesVC: UIViewController {
    
    // Create a data source
    let spiceList: [LCTuple<Int>] = [(key: 1, value:"Cinnamon"),
                                     (key: 2, value:"Cloves"),
                                     (key: 3, value:"Ginger"),
                                     (key: 4, value:"Turmeric"),
                                     (key: 5, value:"Tamarind")]
    
    @IBAction func btnPopoverTapped(_ sender: UIButton) {
        setupBasicPopover(for: sender)
    }
    
    func setupBasicPopover(for sender: UIView) {
        // Init a popover with a callback closure after selecting data
        let popover = LCPopover<Int>(for: sender, title: "Spices") { tuple in
            // Use of the selected tuple
            guard let value = tuple?.value else { return }
            print(value)
        }
        // Assign data to the dataList
        popover.dataList = spiceList
        // Present the popover
        present(popover, animated: true, completion: nil)
    }
}

Set up a custom popover with data list

func setupCustomPopover(for sender: UIView) {
    // Init a popover with a callback closure after selecting data
    let popover = LCPopover<Int>(for: sender, title: "Spices") { tuple in
        // Use of the selected tuple
        guard let value = tuple?.value else { return }
        print(value)
    }
    // Assign data to the dataList
    popover.dataList = spiceList

    // Set popover properties
    popover.size = CGSize(width: 250, height: 219)
    popover.arrowDirection = .down
    popover.backgroundColor = .orange
    popover.borderColor = .orange
    popover.borderWidth = 2
    popover.barHeight = 44
    popover.titleFont = UIFont.boldSystemFont(ofSize: 19)
    popover.titleColor = .orange
    popover.textFont = UIFont(name: "HelveticaNeue-MediumItalic", size: 17) ?? UIFont.systemFont(ofSize: 17)
    popover.textColor = .black

    // Present the popover
    present(popover, animated: true, completion: nil)
}

Installation

CocoaPods

Specify LCUIComponents into your project's Podfile:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!

pod 'LCUIComponents'

Manually Embedded

Simply download and add the Popover.swift file from Source path to your project.