Need help with OCExpandableButton?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

ocrickard
406 Stars 54 Forks MIT License 21 Commits 2 Opened issues

Description

A Sparrow-like expanding toolbar button in CoreAnimation.

Services available

!
?

Need anything else?

Contributors list

# 87,279
C
Objecti...
nsattri...
Shell
13 commits
# 20,183
Swift
Objecti...
uitextv...
nsattri...
3 commits
# 508,188
Crystal
Shell
PHP
1 commit

OCExpandableButton

OCExpandableButton is a VERY simple component in native Objective C that mimics the behavior of the expanding menu in the Sparrow mail app. You give it an array of subviews, and it presents them when it's activated. It is a normal subview, so you're in charge of rotation, and anything extra.

Usage

Usage of the control is totally simple, it works just like any other UIView:

button = [[OCExpandableButton alloc] initWithFrame:CGRectMake(self.view.bounds.size.width - 57, self.view.bounds.size.height - 57, 37, 37) subviews:subviews];
[self.view addSubview:button];

The array of subviews will be positioned and aligned upon opening of the control. The frame for the control should be a square region. The blue "arrow" button will be inset by 4 pixels from this initial rect.

If you want to manually open/close the component (say the screen rotates, or the user begins to scroll), then you can use the following methods:

//Opens the control if the control is currently closed.  No effect if the button
// is already open.
- (void)open;

//Closes the control if open. No effect if already closed.

  • (void)close;

You can make the component reveal with left or right alignment using:

objc
button.alignment = OCExpandableButtonAlignmentLeft;
or
objc
button.alignment = OCExpandableButtonAlignmentRight;

You can use the delegate property in order to notify of the control's opening/closure.

@interface MyClass : NSObject 
    ...
@end

@implementation MyClass ...

  • (void)expandableButtonClosed:(OCExpandableButton*)button { ... }
  • (void)expandableButtonOpened:(OCExpandableButton*)button { ... }

TODO:

  • Implement inner shadows like they have in Sparrow - Not sure what the right API looks like here. Maybe just letting user specify images, or maybe using masks and drawing inner shadows manually?
  • Suggestions?

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.