From a26e38fcf0065a9df782694f757b0f329ec9258a Mon Sep 17 00:00:00 2001 From: Xuyang Hu Date: Fri, 7 Aug 2015 16:33:53 +0800 Subject: [PATCH] Add initWithParentView Mostly indicator is placed at the center of its parent view. Adding placeAtTheCenterWithView to the MONActivityIndicatorView.m can make the view controller lighter. Demo is also changed to show the usage of the method. --- .../Source/Controllers/MONViewController.m | 28 ++--------------- .../MONActivityIndicatorView.h | 5 +++ .../MONActivityIndicatorView.m | 31 +++++++++++++++++++ 3 files changed, 38 insertions(+), 26 deletions(-) diff --git a/MONActivityIndicatorViewDemo/MONActivityIndicatorViewDemo/Source/Controllers/MONViewController.m b/MONActivityIndicatorViewDemo/MONActivityIndicatorViewDemo/Source/Controllers/MONViewController.m index 2707b05..12d2346 100644 --- a/MONActivityIndicatorViewDemo/MONActivityIndicatorViewDemo/Source/Controllers/MONViewController.m +++ b/MONActivityIndicatorViewDemo/MONActivityIndicatorViewDemo/Source/Controllers/MONViewController.m @@ -21,41 +21,17 @@ @implementation MONViewController - (void)viewDidLoad { [super viewDidLoad]; - MONActivityIndicatorView *indicatorView = [[MONActivityIndicatorView alloc] init]; + MONActivityIndicatorView *indicatorView = [[MONActivityIndicatorView alloc] initWithParentView:self.view]; indicatorView.delegate = self; indicatorView.numberOfCircles = 3; indicatorView.radius = 20; indicatorView.internalSpacing = 3; [indicatorView startAnimating]; - - [self.view addSubview:indicatorView]; - [self placeAtTheCenterWithView:indicatorView]; - + [NSTimer scheduledTimerWithTimeInterval:7 target:indicatorView selector:@selector(stopAnimating) userInfo:nil repeats:NO]; [NSTimer scheduledTimerWithTimeInterval:9 target:indicatorView selector:@selector(startAnimating) userInfo:nil repeats:NO]; } -#pragma mark - -#pragma mark - Centering Indicator View - -- (void)placeAtTheCenterWithView:(UIView *)view { - [self.view addConstraint:[NSLayoutConstraint constraintWithItem:view - attribute:NSLayoutAttributeCenterX - relatedBy:NSLayoutRelationEqual - toItem:self.view - attribute:NSLayoutAttributeCenterX - multiplier:1.0f - constant:0.0f]]; - - [self.view addConstraint:[NSLayoutConstraint constraintWithItem:view - attribute:NSLayoutAttributeCenterY - relatedBy:NSLayoutRelationEqual - toItem:self.view - attribute:NSLayoutAttributeCenterY - multiplier:1.0f - constant:0.0f]]; -} - #pragma mark - #pragma mark - MONActivityIndicatorViewDelegate Methods diff --git a/MONActivityIndicatorViewDemo/MONActivityIndicatorViewDemo/Source/Views/MONActivityIndicatorView/MONActivityIndicatorView.h b/MONActivityIndicatorViewDemo/MONActivityIndicatorViewDemo/Source/Views/MONActivityIndicatorView/MONActivityIndicatorView.h index 74e3145..b3b3ce4 100644 --- a/MONActivityIndicatorViewDemo/MONActivityIndicatorViewDemo/Source/Views/MONActivityIndicatorView/MONActivityIndicatorView.h +++ b/MONActivityIndicatorViewDemo/MONActivityIndicatorViewDemo/Source/Views/MONActivityIndicatorView/MONActivityIndicatorView.h @@ -29,6 +29,11 @@ @property (weak, nonatomic) id delegate; +/** + Init with parent view and place activity indicator at the center of parent view + */ +- (id)initWithParentView:(UIView*) parentView; + /** Starts the animation of the activity indicator. */ diff --git a/MONActivityIndicatorViewDemo/MONActivityIndicatorViewDemo/Source/Views/MONActivityIndicatorView/MONActivityIndicatorView.m b/MONActivityIndicatorViewDemo/MONActivityIndicatorViewDemo/Source/Views/MONActivityIndicatorView/MONActivityIndicatorView.m index df32a24..a30a7b5 100644 --- a/MONActivityIndicatorViewDemo/MONActivityIndicatorViewDemo/Source/Views/MONActivityIndicatorView/MONActivityIndicatorView.m +++ b/MONActivityIndicatorViewDemo/MONActivityIndicatorViewDemo/Source/Views/MONActivityIndicatorView/MONActivityIndicatorView.m @@ -78,6 +78,16 @@ - (id)initWithCoder:(NSCoder *)aDecoder { return self; } +- (id)initWithParentView:(UIView*) parentView { + self = [super initWithFrame:CGRectZero]; + if (self) { + [self setupDefaults]; + [parentView addSubview:self]; + [self placeAtTheCenterOfView:parentView]; + } + return self; +} + #pragma mark - #pragma mark - Intrinsic Content Size @@ -145,6 +155,27 @@ - (void)removeCircles { }]; } +#pragma mark - +#pragma mark - Centering Indicator View + +- (void)placeAtTheCenterOfView:(UIView *) parentView { + [parentView addConstraint:[NSLayoutConstraint constraintWithItem:self + attribute:NSLayoutAttributeCenterX + relatedBy:NSLayoutRelationEqual + toItem:parentView + attribute:NSLayoutAttributeCenterX + multiplier:1.0f + constant:0.0f]]; + + [parentView addConstraint:[NSLayoutConstraint constraintWithItem:self + attribute:NSLayoutAttributeCenterY + relatedBy:NSLayoutRelationEqual + toItem:parentView + attribute:NSLayoutAttributeCenterY + multiplier:1.0f + constant:0.0f]]; +} + #pragma mark - #pragma mark - Public Methods