All Projects → manuelescrig → Mevhorizontalcontacts

manuelescrig / Mevhorizontalcontacts

Licence: mit
An iOS UICollectionViewLayout subclass to show a list of contacts with configurable expandable items.

Projects that are alternatives of or similar to Mevhorizontalcontacts

Tkswitchercollection
An animation switch collection
Stars: ✭ 877 (+144.97%)
Mutual labels:  cocoapods, ios-animation
Loadingshimmer
An easy way to add a shimmering effect to any view with just one line of code. It is useful as an unobtrusive loading indicator.
Stars: ✭ 1,180 (+229.61%)
Mutual labels:  cocoapods, ios-animation
Pinterestsegment
A Pinterest-like segment control with masking animation.
Stars: ✭ 560 (+56.42%)
Mutual labels:  cocoapods, ios-animation
Chromacolorpicker
🎨 An intuitive iOS color picker built in Swift.
Stars: ✭ 434 (+21.23%)
Mutual labels:  cocoapods, ios-animation
Wobbly
(Animate CSS) animations for iOS. An easy to use library of iOS animations. As easy to use as an easy thing.
Stars: ✭ 150 (-58.1%)
Mutual labels:  cocoapods, ios-animation
Tkrubberindicator
A rubber animation pagecontrol
Stars: ✭ 1,337 (+273.46%)
Mutual labels:  cocoapods, ios-animation
Sizeslidebutton
A fun Swift UIControl for picking a size
Stars: ✭ 46 (-87.15%)
Mutual labels:  cocoapods, ios-animation
Gemini
Gemini is rich scroll based animation framework for iOS, written in Swift.
Stars: ✭ 2,965 (+728.21%)
Mutual labels:  cocoapods, ios-animation
Nvactivityindicatorview
A collection of awesome loading animations
Stars: ✭ 10,031 (+2701.96%)
Mutual labels:  cocoapods, ios-animation
Tkdotsegment
TKDotSegment is a segment with dot animation
Stars: ✭ 103 (-71.23%)
Mutual labels:  cocoapods, ios-animation
Rhplaceholder
Show pleasant loading view for your users 😍
Stars: ✭ 238 (-33.52%)
Mutual labels:  cocoapods, ios-animation
Mevfloatingbutton
An iOS drop-in UITableView, UICollectionView and UIScrollView superclass category for showing a customizable floating button on top of it.
Stars: ✭ 301 (-15.92%)
Mutual labels:  cocoapods, ios-animation
Rxappstate
RxSwift extensions for UIApplicationDelegate methods to observe changes in your app's state
Stars: ✭ 328 (-8.38%)
Mutual labels:  cocoapods
Marqueelabel
Charles Powell
Stars: ✭ 3,741 (+944.97%)
Mutual labels:  ios-animation
Snapkit
A Swift Autolayout DSL for iOS & OS X
Stars: ✭ 18,091 (+4953.35%)
Mutual labels:  cocoapods
Habitica Ios
Native iOS app for Habitica
Stars: ✭ 324 (-9.5%)
Mutual labels:  cocoapods
Mfcard
Easily integrate Credit Card payments module in iOS App. Swift 4.0
Stars: ✭ 356 (-0.56%)
Mutual labels:  cocoapods
Observable
The easiest way to observe values in Swift.
Stars: ✭ 346 (-3.35%)
Mutual labels:  cocoapods
Maplebacon
🍁🥓 Lightweight and fast Swift library for image downloading, caching and transformations
Stars: ✭ 322 (-10.06%)
Mutual labels:  cocoapods
Hotels
酒店预订App
Stars: ✭ 323 (-9.78%)
Mutual labels:  ios-animation

MEVHorizontalContacts

An iOS UICollectionViewLayout subclass to show a list of contacts with configurable expandable items.

CI Status Version License Platform Language

Features

  • [x] Customizable contacts cells
  • [x] Customizable contact items cells
  • [x] Different sizes and responsive design
  • [x] Multiple delegate methods

Demo App

Run the demo app and play with it! Demo App

Demo Project

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

Getting Started

Requirements

Requires iOS SDK version > 7.0

Requires ARC

Installation with CocoaPods

CocoaPods is a 3rd-party dependency manager for Swift and Objective-C projects. For more information, refer to the CocoaPods Getting Started Guide. Otherwise, you can install CocoaPods with the following command:

$ gem install cocoapods

Podfile

To integrate MEVHorizontalContacts into your Xcode project using CocoaPods, specify it in your Podfile:

source 'https://github.com/CocoaPods/Specs.git'
pod 'MEVHorizontalContacts'

Then, run the following command:

$ pod install

Installation Manually

To integrate MEVHorizontalContacts into your Xcode project manually, just include the filest from /Pod/Classes/ folder in your App’s Xcode project.

Then, import the following file your classes:

#import "MEVHorizontalContacts.h"

Quick Guide

Usage

1. Import class
#import "MEVHorizontalContacts.h"
2. Add Datasource and Delegate protocols.
@interface ViewController () <MEVHorizontalContactsDataSource, MEVHorizontalContactsDelegate>
@property (nonatomic, strong) MEVHorizontalContacts *horizontalContacts;
@end
3. Create, initialize and add MEVHorizontalContacts view.
_horizontalContacts = [MEVHorizontalContacts new];
_horizontalContacts.backgroundColor = [UIColor whiteColor];
_horizontalContacts.dataSource = self;
_horizontalContacts.delegate = self;
[self addSubview:_horizontalContacts];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[horizontalContacts]|" options:NSLayoutFormatAlignAllCenterX metrics:nil views:@{@"horizontalContacts" : _horizontalContacts}]];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[horizontalContacts]|" options:NSLayoutFormatAlignAllCenterY metrics:nil views:@{@"horizontalContacts" : _horizontalContacts}]];
4. Implement Datasource Methods
#pragma mark - MEVHorizontalContactsDataSource Methods

- (NSInteger)numberOfContacts;
- (NSInteger)numberOfItemsAtContactIndex:(NSInteger)index;
- (MEVHorizontalContactsCell *)contactAtIndex:(NSInteger)index;
- (MEVHorizontalContactsCell *)item:(NSInteger)item atContactIndex:(NSInteger)index;
- (UIEdgeInsets)horizontalContactsInsets;
- (NSInteger)horizontalContactsSpacing;

5. Implement Delegate Methods
#pragma mark - MEVHorizontalContactsDelegate Methods

- (void)contactSelectedAtIndex:(NSInteger)index;
- (void)item:(NSInteger)item selectedAtContactIndex:(NSInteger)index;

Example

Customization 1

- (MEVHorizontalContactsCell *)contactAtIndex:(NSInteger)index {
    MEVHorizontalContactsCell *cell = [_horizontalContacts dequeueReusableContactCellForIndex:index];
    [cell.imageView setImage:[UIImage imageNamed:[self getImageNameAtIndex:index]]];
    [cell.imageView.layer setBorderColor:[UIColor colorWithRed:34/255.0f green:167/255.0f blue:240/255.0f alpha:1].CGColor];
    [cell.imageView.layer setBorderWidth:1.0f];
    [cell.label setText:[self getUserNameAtIndex:index]];
    [cell.label setFont:[UIFont boldSystemFontOfSize:12.0f]];
    return cell;
}

- (MEVHorizontalContactsCell *)item:(NSInteger)item atContactIndex:(NSInteger)index {

    UIImage *image;
    NSString *labelText;
    switch (item) {
        case 0:
            labelText = @"Call";
            image = [UIImage imageNamed:@"actionCall"];
            break;
        case 1:
            labelText = @"Email";
            image = [UIImage imageNamed:@"actionEmail"];
            break;
        case 2:
            labelText = @"Message";
            image = [UIImage imageNamed:@"actionMessage"];
            break;
        default:
            labelText = @"Call";
            image = [UIImage imageNamed:@"actionCall"];
            break;
    }
    
    MEVHorizontalContactsCell *cell = [_horizontalContacts dequeueReusableItemCellForIndex:index];
    [cell.imageView setImage:image];
    [cell.imageView setTintColor:[UIColor colorWithRed:34/255.0f green:167/255.0f blue:240/255.0f alpha:1]];
    [cell.imageView.layer setBorderColor:[UIColor colorWithRed:34/255.0f green:167/255.0f blue:240/255.0f alpha:1].CGColor];
    [cell.imageView.layer setBorderWidth:1.0f];
    [cell.label setText:labelText];
    [cell.label setFont:[UIFont boldSystemFontOfSize:10.0f]];

    return cell;
}

Customization 2

- (MEVHorizontalContactsCell *)contactAtIndex:(NSInteger)index {
    MEVHorizontalContactsCell *cell = [_horizontalContacts dequeueReusableContactCellForIndex:index];
    [cell.imageView setImage:[UIImage imageNamed:[self getImageNameAtIndex:index]]];
    [cell.label setText:[self getUserNameAtIndex:index]];
    return cell;
}

- (MEVHorizontalContactsCell *)item:(NSInteger)item atContactIndex:(NSInteger)index {
    
    UIImage *image;
    NSString *labelText;
    switch (item) {
        case 0:
            labelText = @"Call";
            image = [UIImage imageNamed:@"actionCall"];
            break;
        case 1:
            labelText = @"Email";
            image = [UIImage imageNamed:@"actionEmail"];
            break;
        case 2:
            labelText = @"Message";
            image = [UIImage imageNamed:@"actionMessage"];
            break;
        default:
            labelText = @"Call";
            image = [UIImage imageNamed:@"actionCall"];
            break;
    }
    
    MEVHorizontalContactsCell *cell = [_horizontalContacts dequeueReusableItemCellForIndex:index];
    [cell.imageView setImage:image];
    [cell.imageView setBackgroundColor:[UIColor colorWithRed:34/255.0f green:167/255.0f blue:240/255.0f alpha:1]];
    [cell.imageView setTintColor:[UIColor whiteColor]];
    [cell.label setText:labelText];
    [cell.label setTextColor:[UIColor colorWithRed:34/255.0f green:167/255.0f blue:240/255.0f alpha:1]];
    return cell;
}

Roadmap

  • [x] CocoaPods support
  • [ ] Carthage support
  • [ ] Tests

Change Log

See Changelog.md

Author

Apps using this library

License

MEVHorizontalContacts is available under the MIT license. See the LICENSE file for more info.

Icons made by Gregor Cresnar is licensed by Creative Commons BY 3.0

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].