This is a dark-themed and easy to use tab view created entirely using Core Graphics, so that it is easy to drop-in to your projects and operates smoothly on iOS devices. The library itself will also be used in Alien Blue's upcoming iOS updates.
Here's what JMTabView looks like:
And on a retina display:
A demo project is included in this repository so that you can dive right in. In brief, to draw the tab view, you can do the following:
JMTabView * tabView = [[[JMTabView alloc] initWithFrame:frame] autorelease];
[tabView setDelegate:self];
You can then add tab items:
[tabView addTabItemWithTitle:@"One" icon:[UIImage imageNamed:@"icon1.png"]];
By implementing the tabView:didSelectTabAtIndex:
method, you will receive a callback when the tab selection changes.
You can set the icon:
to nil
if you prefer to use text only, or title:
to nil
to show icons only.
If you prefer to use JMTabView as a toolbar you can use the setMomentary:
method to change its selection behaviour.
JMTabView also supports the execution of blocks so that you can embed your logic per tab item, like this:
[tabView addTabItemWithTitle:@"Tab" icon:nil executeBlock:^{ // do stuff after item has been selected }];
You can subclass JMTabItem
and JMSelectionView
to completely customize the view of the tabs. For example, in the inclusive Demo you can see how I've customized the view to render tabs like this:
If you prefer to use JMTabView as a dynamic library in your project, please be sure to add -ObjC -all_load
to your target's Other Linker Flags
. Alternatively, you can reference the .h and .m files directly.
This project uses the UIView+Positioning and UIView+Size categories developed by the very talented Kevin O'Neill.
JMTabView is BSD licensed, so you can freely use it in commercial applications.