Home

Awesome

BPForms

Build Status Pod Version Pod Platform Pod License

Dynamic forms for iPhone/iPad - iOS 6, 7 and later (inspired from BZGFormViewController).

Now integrated with the well known JVFloatLabeledTextField.

<p align="left" > <img src="BPForms.jpeg" title="BPForms demo image" float=left width=300 hspace=40> <img src="BPForms.gif" title="BPForms demo" float=right width=300> </p>

Forms design

How to get started

install via CocoaPods

platform :ios, '6.0'
pod 'BPForms'

Requirements

Architecture

Form

Cells

Appearance

Class Diagram

Check the detailed class diagram.

<p align="left" > <img src="BPFormsSimpleClassDiagram.jpeg" title="BPForms class diagram" width=800> </p>

Dependencies

Demo

Go to /Example, run pod install, and run the target from BPFormsExample.xcworkspace

Usage

For any form you create, you should subclass BPFormViewController or just instantiate it.

Create an input cell

You can create simple input cells (BPFormInputTextFieldCell) or input cells where the label floats above the text value (BPFormFloatInputTextFieldCell - see screenshot).

Just set the properties you need and make sure you set the BPFormViewController instance as delegate for the textField. shouldChangeBlock is used to verify the data entered, so please add the verification code (see example).

BPFormFloatInputTextFieldCell *emailCell = [[BPFormFloatInputTextFieldCell alloc] init];
emailCell.textField.placeholder = @"Email";
emailCell.textField.delegate = self;
emailCell.customCellHeight = 50.0f;
emailCell.mandatory = YES;
emailCell.shouldChangeTextBlock =
        BPValidateBlockWithPatternAndMessage(
            @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}",
            @"The email should look like name@provider.domain");

Create a button cell

BPFormButtonCell *signUpCell = [[BPFormButtonCell alloc] init];
signUpCell.button.backgroundColor = [UIColor blueColor];
[signUpCell.button setTitle:@"Sign Up" forState:UIControlStateNormal];
signUpCell.button.layer.cornerRadius = 4.0;
signUpCell.button.layer.masksToBounds = YES;
signUpCell.buttonActionBlock = ^(void){
    NSLog(@"Button pressed");
};

Add all the cells to the form controller

self.formCells = @[@[emailCell, passwordCell, password2Cell, nameCell, phoneCell], @[signUpCell]];

Add section header or footer

[self setHeaderTitle:@"Please enter your credentials" forSection:0];
[self setFooterTitle:@"When you're done, press <<Sign Up>>" forSection:0];

Tweak appearance

// fonts
[BPAppearance sharedInstance].infoCellLabelFont = [UIFont systemFontOfSize:12];

// colors
[BPAppearance sharedInstance].headerFooterLabelTextColor = [UIColor lightGray];

// sizes
[BPAppearance sharedInstance].infoCellHeight = 25;

Author

License