A set of classes used to display progress information to users on iOS.


  • A interchangeable set of progress view of diffrent styles. All the progress views are based on the same superclass, allowing any of them to be switched with any other easily.
  • A progress bar for UINavigationBar that works like Apple's Messages app. It also has the added feature of having an indeterminate style.
  • A HUD overlay that works over any UIView. Uses the M13ProgressView class to allow easy customizablility of the progress view.
  • A progress view that is styled like terminal.
  • Complete documentation of each class.

UINavigationController (M13ProgressViewBar)

Adds a progress bar to the UINavigationController's UINavigationBar. The progress bar is controlled through the UINavigationController.


A customizable HUD that displays progress, and status information to the user. It uses the M13ProgressView class to allow easy changing of the progress view style.


A progress view styled like Terminal on OS X.


A set of progess view based off of the same superclass. Allowing easy switching between progress view. Each progress view has success and failure actions, an indeterminate mode, and appearance customization features.


Bordered Bar

Filtered Image




Segmented Bar*

Segmented Ring

Striped Bar

Progress View Usage:

All progress bars follow the same general usage:

// Create the progress view.
M13ProgressViewBar *progressView = [[M13ProgressViewBar alloc] initWithFrame:CGRectMake(0.0, 0.0, 50.0, 5.0)];

// Configure the progress view here.

// Add it to the view.
[self.view addSubview: progressView];

// Update the progress as needed
[progressView setProgress: 0.1 animated: YES];

HUD Usage:

// Create the HUD
M13ProgressHUD *HUD = [[M13ProgressHUD alloc] initWithProgressView:[[M13ProgressViewRing alloc] init]];

// Configure the progress view
HUD.progressViewSize = CGSizeMake(60.0, 60.0);
HUD.animationPoint = CGPointMake([UIScreen mainScreen].bounds.size.width / 2, [UIScreen mainScreen].bounds.size.height / 2);

// Add the HUD to the window. (Or any UIView)
UIWindow *window = ((AppDelegate *)[UIApplication sharedApplication].delegate).window;
[window addSubview:HUD];

// Show the HUD
[HUD show:YES];

//Update the HUD progress
[HUD setProgress:0.5 animated:YES];

// Update the HUD status
HUD.status = @"Processing";

// Hide the HUD
[HUD show:NO];