ShinobiEssentials is a collection of user interface controls for iOS, created by ShinobiControls.

This page gives a brief overview of each of the controls, and then a full description of the API.

For a detailed introduction on installing and using ShinobiEssentials see the EssentialsUserGuide.


SEssentialsCarousel UserGuide
A carousel is a layout component for displaying a collection of UIViews, in any 2D or 3D configuration allowing users to swipe through and select items. Developers wanting a preset layout type should use the relevant subclass of the SEssentialsCarousel. The carousel works with any UIView supplied via the SEssentialsCarouselDataSource but further customizations such as shadowing and reflections can be achieved by wrapping items with the SEssentialsDecoratedView.

Sliding Overlay

SEssentialsSlidingOverlay UserGuide
A sliding overlay is a UIView which comprises 2 subviews. The overlay view is the principal view, and is visible by default. The underlay view is initially hidden. The user is able to swipe the overlay to reveal the underlay along one of the edges of the overlay. A toolbar with a reveal/hide button is also available. SEssentialsSlidingOverlay is the base class used to create a sliding overlay, and has properties overlay and underlay. Add your UIView subclasses as subviews to these views to build your sliding overlay.

Flow Layout

SEssentialsFlowLayout UserGuide
A flow layout is a UIView which contains a set of user-provided subviews. These subviews are arranged in a raster fashion, in the order they are provided to the control. The default behavior allows a user to enter edit mode using a long press on one of the managed subviews, at which point the subviews can be reordered, or removed entirely. The flow layout supports 2 delete idioms - one matching the iOS home screen icon management, and the other providing a trash can to which the subviews can be dragged. SEssentialsFlowLayout is the class used to create a flow layout control. Add the subviews you wish to flow by sending your instance an addManagedSubview: message. You can get an ordered list of the subviews currently in the flow layout with the managedViews property, and you can specify an ordering with the reorderManagedSubviews:animated: message.

Tabbed View

SEssentialsTabbedView UserGuide
A tabbed view is a UIView which contains multiple user-provided subviews, only one of which is visible at any one time. Each of the views has an associated tab header displayed in a tab bar either at the top or bottom of the view, and tapping on one of the tab headers will display its associated content sub view. This is a UI paradigm used in many web browsers, across operating systems. Standard operation includes functionality to reorder the tab headers, remove them, display a list of unseen tab headers in a table and add new tabs. SEssentialsTabbedView is the container class for this control. Tabs are instances of the SEssentialsTab class, and are added to the tabbed container by passing it the addTab: message. A class which implements the SEssentialsTabbedViewDataSource protocol is required to provide the UIViews which form the content for each tab - the message passed being tabbedView:contentForTab:.

Progress/Activity Indicators

SEssentialsProgressIndicator UserGuide
Progress and activity indicators are both used as visual feedback to the user that the app is working on something in the background - whether it be a computationally complex task or, more likely in an iOS app, waiting for a response from a remote resource. Progress indicators are used when a task is able to provide regular updates to the user as to the proportion of the task which has been completed. These take the form of a visual indicator which gradually works towards completion. Activity indicators are used when the task is of indeterminate length - e.g. waiting for a network resource to return a response. These take the form of a cyclical animation which repeats. ShinobiEssentials provides a selection of different progress and activity indicators. Progress indicators are created using the SEssentialsProgressIndicator class, and activity indicators with the SEssentialsActivityIndicator. Progress indicators have a progress property ranging between 0 and 1, which, when updated will update the display of the indicator. Both progress and activity indicators can be either radial or linear, and discrete or continuous. Discrete indicators are made up of repeated UIViews, whereas continuous indicators are formed from a bar or ring. For further information check out the SEssentialsProgressIndicator and SEssentialsActivityIndicator classes.


SEssentialsAccordion UserGuide
An instance of SEssentialsAccordion (or simply, an accordion) is a means for displaying lists of information, where some of the information is shown, and some of the information is hidden. An accordion is made up of zero or more sections. You can open or close sections to display or hide the information they contain. Each section is implemented using the SEssentialsAccordionSection class. A section has a header view which is an instance of SEssentialsAccordionSectionHeader, and a content view which is a standard UIView. You can either define a custom view for the header, or you can simply define a title for the section and use the default header view. You supply the content to be displayed in each section. Each section header contains an instance of SEssentialsAccordionSectionHeaderStyle. This style object manages the appearance of the section. An accordion must have an object that acts as a datasource. The datasource must adopt the SEssentialsAccordionDataSource protocol. The dataSource is used to provide the content for each section, which is displayed when the section is opened. An accordion can optionally have an object that acts as a delegate. The delegate must adopt the SEssentialsAccordionDelegate protocol. The delegate is notified when sections are opened, closed, added, deleted or moved. There are currently two types of accordion: A fixed accordion only shows the contents of one section at a time. When a section is opened, the previously open section is closed. The accordion has a fixed size, and does not scroll. A flexible accordion allows multiple sections to be open at the same time. Its contents can be bigger than its frame. In this case, it will scroll up and down.

Pull to Action

SEssentialsPullToAction UserGuide
The SEssentialsPullToAction is used in conjunction with a UIScrollView allowing users to trigger an event (such as refreshing content) by pulling the scroll view down past a custom threshold. Whilst your users interact with the scroll view, the Pull to Action component will pass through various states, updating its appearance accordingly. You can specify the threshold at which the pulldown will trigger an event and you can also implement methods in the SEssentialsPullToActionDelegate to react to events. By default, the ‘Pull to Action’ will display a ‘status view’ hidden offscreen atop of the scroll view it tracking.

API Reference