buzztouch plugin: Cubbyholes
Version: 1.10
Fourm StarFourm StarFourm StarFourm StarFourm Star
Cubbyholes are powerful information elements in the form of text, images and HTML that can go anywhere onto the screen. Specify the X,Y coordinates and the Height-Width dimensions of each element to get the desired custom layout.
works on iOS iOS
Developer Info
Latest Review
PointerBecky | 04/08/15 (v1.9)
Fourm StarFourm StarFourm StarFourm StarFourm Star
This is such a solid plugin and my go-to plugin for creating great looking, multi-functioning screens. You also can't beat the wobble animation....makes life and apps all that more interesting :) Would love to see this convert over to Android somed...
More Information
The Cubbyholes plugin allows one to put these items anywhere on the iPhone and iPad screen, and at any size:
- Text labels
- Scrollable text blocks
- Images
- Popover images

Each item can be tappable to take one to another screen within the App.

Scroll entire screen to see more content below. The content can be seen by smooth scrolling or by paged scrolling where the next screen jumps into view.



Each of the Cubbyholes share these common properties:
- X and Y position (coordinates)
- Width and Height values
- Margins at top-bottom, left-right
- Background colors and gradients
- Border width, color and radius
- Tap on the item to take one to another screen within the App



HEADLINE type of Cubbyhole, it comes with the pair of a Title and Description:
- Title text, height, font size, color and alignment (left-center-right)
- Description text, height, font size, color and alignment (left-center-right)
- Background image
- Icon image to be displayed on left-side of the Title label
- Tap on the text to take one to another screen within the App

IMAGE type of Cubbyhole, these are the additional properties:
- Background image for the cubbyhole
- Wobble quantity for animation of the cubbyhole
- Tap on the image to take one to another screen within the App

HTML type of Cubbyhole, these are the additional properties:
- Inline HTML
- Inline CSS
- Tap on an HTML link to take one to another screen within the App

POPOVER type of Cubbyhole, these are the additional properties:
- Button image (the one that is tapped to display popover)
- 3D style for popover
- Dismiss popover via tap anywhere on screen
- Automatically dismiss popover after X-seconds
- Disable tap to dismiss
- Arrow pointer direction (automatic, up, down)
- Corner radius of popover
- Border color of popover
- Border width of popover
- Gradient background
- Shadow
- Max Width
- Side padding
- Top margin
- Bubble Padding X-axis
- Bubble Padding Y-axis
- Size of pointer
- Filename of Image within popover
- URL of Image within popover



v1.10 - May 27, 2015 - Added a new capability: Popovers with embedded images inside

v1.9 - Mar 29, 2015 -      Commented out last line in wobbleButtonEnded to prevent crash, don't yet know why it crashes

To recognize taps on objects, enabled UserInteractionEnabled for the overall UIScrollView layer

Moved make-a-cubbyhole methods into its own Factory class, NS_CubbyFactory

Based on Portrait or Landscape orientation of the device, updated deviceWidth for iOS 8 compatibility

Added itemTappable property to indicate if an object is tappable

Add method isItemTappable: to determine if an object is tappable based on loadScreenWithItemId

For Images and Headlines, allowed for loadScreenWithItemId to be @"" or @"none". Then Headlines and Images can be simply decorative and not interactive.

To allow for overlapping button images, the return value from makeImageViewBox changed from UIButton to OBShapedButton.

v1.8 - Sep 21, 2014 - Added loadScreenObject,
                          Separated Description into its own section, split away from Headline section
                          Description field recognizes Tappable content (phone, address, URL, etc.)
                          Control Panel updated for Description section
                          Added descriptionLinkColor field into Description section

v1.7 - Sep 03, 2014 - Corrected a goof on BT_appDelegate references

v1.6 - Sep 01, 2014 - Added vertical scrollability, can specify qty of screens and paging

v1.5 - Aug 25, 2014 - Updated interface spec from NS_boxes to NS_Cubbyholes

v1.4 - Aug 24, 2014 - General Cleanup and reminder to check for Screen Nickname of 'none' in buttonTapped and viewTapped methods of NS_Cubbyholes.m class

v1.3 - Aug 24, 2014 - NS_boxes.h reference replaced by NS_Cubbyholes.h reference

v1.2 - Aug 23, 2014 - superbowl_appDelegate now replaced with BT_appDelegate

v1.1 - Aug 16, 2014 - Headline (text label) is tappable to show next screen

v1.0 - May 02, 2014 - Plugin is born and released into the wild



Place relevant images into the BT_Images file in your Xcode project.

The files you need for this plugin are automatically included in the project
package you download from the Download Source Code screen in your control panel.

This plugin has these files:


Not for Android



If you manually enter the menu item data, the JSON data for this item in the BT_config.txt
includes a child items array holding individual BT_menuItem items. Each item displays a cubbyhole element on the screen.

If there are many cubbyholes for a single screen or multiple screens, then one should make separate JSON files to hold each screen's cubbyholes.

     "itemId": "MVPCard48",
     "itemType": "NS_boxes",
     "itemNickname": "PlayerCard48",
     "navBarTitleText": "Super Bowl 48 MVP",
     "imageURL": "",
     "localFileName": "MVPCard48.txt",
     "backgroundColor": "#000000",
     "backgroundImageNameSmallDevice": "MVPBlank.png",
     "backgroundImageScale": "top",
     "preventAllScrolling": "0",
     "scrollByPages": "1",
     "qtyPagesToScroll": "3",
     "includeAds": "0"
     "childItems": [
               "itemId": "Malcolm_Smith_small_image",
               "itemType": "BT_menuItem",
               "loadScreenWithItemId": "MVP_Bio_48",
               "boxType": "image",
               "boxPositionX": "35",
               "boxPositionY": "175",
               "boxWidth": "130",
               "boxHeight": "170",
               "titleText": "",
               "titleHeight": "",
               "titleFontSize": "",
               "titleFontColor": "",
               "titleTextAlignment": "",
               "descriptionText": "",
               "descriptionHeight": "",
               "descriptionFontSize": "",
               "descriptionFontColor": "",
               "descriptionTextAlignment": "",
               "marginTop": "0",
               "marginLeft": "0",
               "marginBottom": "0",
               "marginRight": "0",
               "gradientStartPointX": "",
               "gradientStartPointY": "",
               "gradientEndPointX": "",
               "gradientEndPointY": "",
               "gradientStartColor": "",
               "gradientEndColor": "",
               "borderWidth": "0",
               "borderColor": "#ffffff",
               "borderCornerRadius": "",
               "boxBackgroundColor": "",
               "imageFileName": "MVPHeadshot48.png",
               "boxBackgroundImage": ""
               "itemId": "SuperBowl_48_MVP_Title",
               "itemType": "BT_menuItem",
               "loadScreenWithItemId": "none",
               "boxType": "headline",
               "boxPositionX": "37",
               "boxPositionY": "76",
               "boxWidth": "200",
               "boxHeight": "44",
               "titleText": "SUPER BOWL 48",
               "titleHeight": "44",
               "titleFontName": "DIN Condensed",
               "titleFontSize": "40",
               "titleFontColor": "#ffffff",
               "titleTextAlignment": "Left",
               "descriptionText": "",
               "descriptionHeight": "0",
               "descriptionFontName": "DIN Condensed",
               "descriptionFontSize": "16",
               "descriptionFontColor": "#7C96A1",
               "descriptionTextAlignment": "Left",
               "marginTop": "0",
               "marginLeft": "0",
               "marginBottom": "0",
               "marginRight": "0",
               "gradientStartPointX": "0.5",
               "gradientStartPointY": "1.0",
               "gradientEndPointX": "0.5",
               "gradientEndPointY": "0.3",
               "gradientStartColor": "",
               "gradientEndColor": "",
               "borderWidth": "0",
               "borderColor": "#1ce123",
               "borderCornerRadius": "0",
               "boxBackgroundColor": "",
               "imageFileName": "",
               "boxBackgroundImage": ""