Code Monkey home page Code Monkey logo

monactivityindicatorview's Introduction

MONActivityIndicatorView

MONActivityIndicatorView is an awesome custom activity indicator view for iOS.

![MONActivityIndicatorView] (https://raw.github.com/mownier/MONActivityIndicatorView/master/MONActivityIndicatorView-Screenshot.gif)

Installation

Manual Install

  • Copy and add the files MONActivityIndicatorView.h and MONActivityIndicatorView.m to your project.
  • Add the QuartzCore framework to your project.
  • Then do, import MONActivityIndicatorView.h

From CocoaPods

  • Add pod 'MONActivityIndicatorView' to your Podfile.
  • Then pod install in the terminal.

Usage

Initialization

- (void)viewDidLoad {
  [super viewDidLoad];

  MONActivityIndicatorView *indicatorView = [[MONActivityIndicatorView alloc] init];
  [self.view addSubview:indicatorView];
}

Toggling Indicator

[indicatorView startAnimating];
[indicatorView stopAnimating];

Customization

Default Property Values

  • Animation delay : delay = 0.2
  • Animation duration : duration = 0.8
  • Number of circles : numberOfCircles = 5
  • Circle's radius : radius = 10
  • Circle's internal spacing : internalSpacing = 5
  • Circle's background Color : defaultColor = [UIColor lightGrayColor]

Custom Property Values

- (void)viewDidLoad {
  [super viewDidLoad];
  
  MONActivityIndicatorView *indicatorView = [[MONActivityIndicatorView alloc] init];
  indicatorView.numberOfCircles = 3;
  indicatorView.radius = 20;
  indicatorView.internalSpacing = 3;
  indicatorView.duration = 0.5;
  indicatorView.delay = 0.5
  indicatorView.center = self.view.center;
  [self.view addSubview:indicatorView];
  [indicatorView startAnimating];
}

Custom Circle's Background Color

First, assign the MONActivityIndicatorViewDelegate protocol to a view controller. Then, implement the method activityIndicatorView:circleBackgroundColorAtIndex:

@interface ViewController : UIViewController <MONActivityIndicatorViewDelegate>

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  
  MONActivityIndicatorView *indicatorView = [[MONActivityIndicatorView alloc] init];
  indicatorView.delegate = self;
  indicatorView.numberOfCircles = 3;
  indicatorView.radius = 20;
  indicatorView.internalSpacing = 3;
  indicatorView.duration = 0.5;
  indicatorView.delay = 0.5
  indicatorView.center = self.view.center;
  [self.view addSubview:indicatorView];
  [indicatorView startAnimating];
}

- (UIColor *)activityIndicatorView:(MONActivityIndicatorView *)activityIndicatorView
      circleBackgroundColorAtIndex:(NSUInteger)index {
  // For a random background color for a particular circle
  CGFloat red   = (arc4random() % 256)/255.0;
  CGFloat green = (arc4random() % 256)/255.0;
  CGFloat blue  = (arc4random() % 256)/255.0;
  CGFloat alpha = 1.0f;
  return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
}

@end

monactivityindicatorview's People

Contributors

aryt avatar gmarcus avatar mownier avatar ssimonov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

monactivityindicatorview's Issues

Implement intrinsicContentSize

Please implement this method as follows and call invalidateIntrinsicContentSize instead of adjustFrame. This way it plays well together with iOS auto-layout.

-(CGSize)intrinsicContentSize
{
    return CGSizeMake((self.numberOfCircles * ((2 * self.radius) + self.internalSpacing)) - self.internalSpacing, self.radius * 2);
}

The issue I'm having is that I can't center the view horizontally using layout constraints without knowing the exact width of the view. With intrinsicContentSize implemented, it would layout automatically.

Sometimes it doesn't work

Hi~

Sometimes circles of indicatorView are not visible.

In order to find out to cause of this problem, I modified the code " [circle setTransform:CGAffineTransformMakeScale(0, 0)];" into " [circle setTransform:CGAffineTransformMakeScale(1, 1)]; in "- (void)addCircles" method.

As a result, circles are always visible but sometimes there is no animation.

I don't know why exactly this has happened.

Thank you for reading this.

indicator is not placed in center of view

following is my configuration, but the indicator is not placed in center of view actually.

    self.indicatorView = [[MONActivityIndicatorView alloc] init];
    self.indicatorView.delegate = self;
    self.indicatorView.center = self.view.center;
    self.indicatorView.numberOfCircles = 7;
    self.indicatorView.radius = 5;
    self.indicatorView.internalSpacing = 3;
    self.indicatorView.duration = 0.5;
    self.indicatorView.delay = 0.5;

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.