Replacement for UIActionSheet on iOS 7, with customizable fonts and colors, and block-based actions.
Objective-C Ruby
Latest commit b36369a Mar 8, 2015 @jaredsinclair Merge pull request #2 from bryson/master
Removed .DS_Store file. Git-ignored this file for the future.
Permalink
Failed to load latest commit information.
Source Silence warning. Aug 17, 2014
.gitignore
JTSActionSheet.podspec Update podspec. Aug 17, 2014
LICENSE Initial commit Jul 24, 2014
README.md Update README.md Jul 25, 2014
jtsactionsheet.png Update screenshot. Aug 8, 2014

README.md

JTSActionSheet

Replacement for UIActionSheet on iOS 7, with customizable fonts and colors, and block-based actions.

Screenshots

Both of these screenshots were made with JTSActionSheet. I've taken great pains to mimic the native look of UIActionSheet on iOS 7 where possible.

Why Use This?

JTSActionSheet will help you if your project has any of these requirements:

  • You need to specify custom fonts for buttons and titles.
  • You would like to choose custom colors for everything: button titles, background colors, etc.
  • You want to use a simple block-based API for button actions.
  • You need to easily drop back to a native appearance for some edge cases.

Surprisingly, there aren't any other ready-made solutions available in the wild. So I made one.

When Not To Use This

Don't use this if you need:

  • iOS 8 features like those provided by UIAlertController.
  • iPad support. It might work on the iPad, but I highly doubt it will look good.
  • Scrollable action sheets (you know, how the native UIActionSheet becomes a scrollable table view when there are too many items to fit in a given area).
  • Landscape support (unless you don't mind a wide horizontal stretch).

How to Use This

It's pretty easy. The steps are:

  1. Create a JTSActionSheetTheme, either from scratch or with defaultTheme.
  2. Setup JTSActionSheetItems representing your buttons and cancel button.
  3. Create and show a new JTSActionSheet.

Here is some sample code showing it all together:

// Import this

#import "JTSActionSheet.h"

[...]

// Create a theme

JTSActionSheetTheme *theme = [JTSActionSheetTheme defaultTheme];


// Setup your buttons

JTSActionSheetItem *buyAll = [JTSActionSheetItem itemWithTitle:@"Buy All" action:^{
    // do stuff
} isDestructive:NO];

JTSActionSheetItem *deleteAll = [JTSActionSheetItem itemWithTitle:@"Delete All" action:^{
    // do stuff
} isDestructive:YES];

JTSActionSheetItem *cancel = [JTSActionSheetItem itemWithTitle:@"Cancel" action:^{
    // respond to cancellation
    // Action blocks can be nil if you want.
} isDestructive:NO];


// Create & Show an Action Sheet

JTSActionSheet *sheet = [[JTSActionSheet alloc] initWithTheme:theme
                                                        title:@"Your Options"
                                                  actionItems:@[buyAll, deleteAll]
                                                   cancelItem:cancel];
[sheet showInView:self.view];