Latest 1.0.1
Homepage https://github.com/jaredsinclair/JTSActionSheet
License MIT
Platforms ios 7.0, requires ARC
Frameworks UIKit
Authors

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];

Latest podspec

{
    "name": "JTSActionSheet",
    "version": "1.0.1",
    "summary": "Replacement for UIActionSheet on iOS, with customizable fonts and colors, and block-based actions.",
    "homepage": "https://github.com/jaredsinclair/JTSActionSheet",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    },
    "authors": {
        "Jared Sinclair": "https://twitter.com/jaredsinclair"
    },
    "source": {
        "git": "https://github.com/jaredsinclair/JTSActionSheet.git",
        "tag": "1.0.1"
    },
    "platforms": {
        "ios": "7.0"
    },
    "requires_arc": true,
    "frameworks": "UIKit",
    "compiler_flags": "-fmodules",
    "source_files": [
        "Source/*.{h,m}"
    ]
}

Pin It on Pinterest

Share This