Adding option to show a label to loading overlay
This commit is contained in:
parent
022319c186
commit
939ee1ec7a
@ -12,11 +12,13 @@
|
||||
#import "UIColor+MFConvenience.h"
|
||||
#import "MFStyler.h"
|
||||
#import "MVMCoreUICommonViewsUtility.h"
|
||||
#import <MVMCoreUI/MVMCoreUI-Swift.h>
|
||||
|
||||
@interface MFLoadingViewController ()
|
||||
|
||||
@property (nullable, weak, nonatomic) MFLoadingSpinner *activityIndicator;
|
||||
@property (nullable, weak, nonatomic) UIView *transparentBackgroundView;
|
||||
@property (nullable, weak, nonatomic) Label *indicatorText;
|
||||
|
||||
@end
|
||||
|
||||
@ -27,23 +29,40 @@
|
||||
view.backgroundColor = [UIColor clearColor];
|
||||
self.view = view;
|
||||
|
||||
UIStackView *loadingStack = [[UIStackView alloc] initWithFrame:CGRectZero];
|
||||
loadingStack.axis = UILayoutConstraintAxisVertical;
|
||||
loadingStack.alignment = UIStackViewAlignmentCenter;
|
||||
loadingStack.spacing = 20;
|
||||
|
||||
// Sets up the loading view.
|
||||
MFLoadingSpinner *activityIndicatorView = [[MFLoadingSpinner alloc] initWithFrame:CGRectMake(0, 0, 36, 36)];
|
||||
activityIndicatorView.backgroundColor = [UIColor clearColor];
|
||||
activityIndicatorView.translatesAutoresizingMaskIntoConstraints = NO;
|
||||
[view addSubview:activityIndicatorView];
|
||||
self.activityIndicator = activityIndicatorView;
|
||||
self.activityIndicator.accessibilityIdentifier = @"Loader";
|
||||
[activityIndicatorView pinWidthAndHeight];
|
||||
|
||||
Label *infoLabel = [Label commonLabelH3:YES];
|
||||
infoLabel.textAlignment = NSTextAlignmentCenter;
|
||||
infoLabel.translatesAutoresizingMaskIntoConstraints = NO;
|
||||
self.indicatorText = infoLabel;
|
||||
|
||||
[loadingStack addArrangedSubview:activityIndicatorView];
|
||||
[loadingStack addArrangedSubview:infoLabel];
|
||||
|
||||
loadingStack.translatesAutoresizingMaskIntoConstraints = NO;
|
||||
[view addSubview:loadingStack];
|
||||
// Sets the constraints for the activityIndicatorView
|
||||
[NSLayoutConstraint constraintPinSubview:activityIndicatorView pinCenterX:YES pinCenterY:YES];
|
||||
|
||||
[NSLayoutConstraint constraintWithItem:infoLabel attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationGreaterThanOrEqual toItem:nil attribute:NSLayoutAttributeHeight multiplier:1.0 constant:1.0];
|
||||
[NSLayoutConstraint constraintPinSubview:loadingStack pinCenterX:YES pinCenterY:YES];
|
||||
[NSLayoutConstraint constraintPinSubview:loadingStack pinTop:NO topConstant:0 pinBottom:NO bottomConstant:0 pinLeft:YES leftConstant:0 pinRight:YES rightConstant:0];
|
||||
|
||||
// Sets up the transparent background view.
|
||||
UIView *transparentBackground = [MVMCoreUICommonViewsUtility commonView];
|
||||
transparentBackground.backgroundColor = [UIColor mfBackgroundGray];
|
||||
transparentBackground.alpha = 0.9;
|
||||
[view insertSubview:transparentBackground belowSubview:activityIndicatorView];
|
||||
[view insertSubview:transparentBackground belowSubview:loadingStack];
|
||||
self.transparentBackgroundView = transparentBackground;
|
||||
|
||||
// Sets the constraints of the transparent background view to be the same as the activity indicator view.
|
||||
@ -61,6 +80,14 @@
|
||||
[self.activityIndicator resumeSpinner];
|
||||
}
|
||||
|
||||
- (void)startLoadingWith:(nullable NSString *) text{
|
||||
if([text length] != 0){
|
||||
self.indicatorText.text = text;
|
||||
self.indicatorText.accessibilityLabel = text;
|
||||
}
|
||||
[self.activityIndicator resumeSpinner];
|
||||
}
|
||||
|
||||
- (void)stopLoading {
|
||||
[self.activityIndicator pauseSpinner];
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user