Merge branch 'release/7_1_0' into 'develop'

Release/7 1 0

See merge request BPHV_MIPS/mvm_core_ui!179
This commit is contained in:
Hedden, Kyle Matthew 2019-11-19 17:02:45 -05:00
commit a714100b73
4 changed files with 59 additions and 16 deletions

View File

@ -71,4 +71,6 @@
- (BOOL)bottomViewOutsideOfScroll; - (BOOL)bottomViewOutsideOfScroll;
//override for setting attributed headline and message //override for setting attributed headline and message
-(void)setHeadlineAndMessage; -(void)setHeadlineAndMessage;
- (nullable UIView *)topAccessoryView;
@end @end

View File

@ -31,6 +31,7 @@
@property (strong, nonatomic) UIView *footerViewOutsideOfScroll; @property (strong, nonatomic) UIView *footerViewOutsideOfScroll;
@property (strong, nonatomic) NSLayoutConstraint *bottomViewTopConstraint; @property (strong, nonatomic) NSLayoutConstraint *bottomViewTopConstraint;
@property (strong, nonatomic) UIView *headerAccessoryView; @property (strong, nonatomic) UIView *headerAccessoryView;
@property (strong, nonatomic) UIView *topAccessoryView;
@end @end
@ -70,6 +71,9 @@
} }
} }
- (nullable UIView *)topAccessoryView {
return nil;
}
- (void)newDataBuildScreen { - (void)newDataBuildScreen {
[super newDataBuildScreen]; [super newDataBuildScreen];
@ -254,15 +258,25 @@
[header addSubview:topView]; [header addSubview:topView];
[header addSubview:headerAccessoryView]; [header addSubview:headerAccessoryView];
// Sets up the constraints UIView *topAccessoryView = [self topAccessoryView];
if (headerAccessoryView) { self.topAccessoryView = topAccessoryView;
[NSLayoutConstraint activateConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[topView]-0-[headerAccessoryView]" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:NSDictionaryOfVariableBindings(topView,headerAccessoryView)]]; if (topAccessoryView) {
[NSLayoutConstraint constraintPinSubview:topView pinTop:YES topConstant:0 pinBottom:NO bottomConstant:0 pinLeft:YES leftConstant:0 pinRight:YES rightConstant:0]; [header addSubview:topAccessoryView];
self.topViewBottomConstraint = [[NSLayoutConstraint constraintPinSubview:headerAccessoryView pinTop:NO topConstant:0 pinBottom:YES bottomConstant:[[self spaceAboveBetweenView] floatValue] pinLeft:YES leftConstant:0 pinRight:YES rightConstant:0] objectForKey:ConstraintBot ofType:[NSLayoutConstraint class]]; [NSLayoutConstraint constraintPinSubview:topAccessoryView pinTop:YES pinBottom:NO pinLeft:YES pinRight:YES];
} [topAccessoryView.bottomAnchor constraintEqualToAnchor:topView.topAnchor constant:0].active = YES;
else { }
self.topViewBottomConstraint = [[NSLayoutConstraint constraintPinSubview:topView pinTop:YES topConstant:0 pinBottom:YES bottomConstant:[[self spaceAboveBetweenView] floatValue] pinLeft:YES leftConstant:0 pinRight:YES rightConstant:0] objectForKey:ConstraintBot ofType:[NSLayoutConstraint class]];
} BOOL topPin = topAccessoryView ? NO : YES;
// Sets up the constraints
if (headerAccessoryView) {
[NSLayoutConstraint activateConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[topView]-0-[headerAccessoryView]" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:NSDictionaryOfVariableBindings(topView,headerAccessoryView)]];
[NSLayoutConstraint constraintPinSubview:topView pinTop:topPin topConstant:0 pinBottom:NO bottomConstant:0 pinLeft:YES leftConstant:0 pinRight:YES rightConstant:0];
self.topViewBottomConstraint = [[NSLayoutConstraint constraintPinSubview:headerAccessoryView pinTop:NO topConstant:0 pinBottom:YES bottomConstant:[[self spaceAboveBetweenView] floatValue] pinLeft:YES leftConstant:0 pinRight:YES rightConstant:0] objectForKey:ConstraintBot ofType:[NSLayoutConstraint class]];
}
else {
self.topViewBottomConstraint = [[NSLayoutConstraint constraintPinSubview:topView pinTop:topPin topConstant:0 pinBottom:YES bottomConstant:[[self spaceAboveBetweenView] floatValue] pinLeft:YES leftConstant:0 pinRight:YES rightConstant:0] objectForKey:ConstraintBot ofType:[NSLayoutConstraint class]];
}
self.headerView = header; self.headerView = header;
} }
@ -281,6 +295,7 @@
self.footerView = footer; self.footerView = footer;
} }
- (void)showHeader { - (void)showHeader {
if (self.headerView) { if (self.headerView) {
@ -459,6 +474,10 @@
#pragma mark - Animation #pragma mark - Animation
-(void)setupIntroAnimations { -(void)setupIntroAnimations {
if (self.topAccessoryView.subviews.count) {
[self.introAnimationManager addAnimationWithAnimation:[MVMAnimations fadeUpAnimationWithView:self.topAccessoryView]];
}
if (self.topView.subviews.count) { if (self.topView.subviews.count) {
[self.introAnimationManager addAnimationWithAnimation:[MVMAnimations fadeUpAnimationWithView:self.topView]]; [self.introAnimationManager addAnimationWithAnimation:[MVMAnimations fadeUpAnimationWithView:self.topView]];
} }

View File

@ -38,6 +38,8 @@
#pragma mark - Subclass #pragma mark - Subclass
- (nullable UIView *)topAccessoryView;
// Allow you to add any additional ui before buildViewsBetweenLabelsAndButtons gets called. Can use this to set the topBetweenEdgeView or bottomBetweenEdgeView // Allow you to add any additional ui before buildViewsBetweenLabelsAndButtons gets called. Can use this to set the topBetweenEdgeView or bottomBetweenEdgeView
- (void)buildInAdditionalViewsBeforeCenteredContent; - (void)buildInAdditionalViewsBeforeCenteredContent;
// For subclassing. Should return all the views that will be in between labels and buttons. Override standardSpaceAroundUIObject to handle spacing. // For subclassing. Should return all the views that will be in between labels and buttons. Override standardSpaceAroundUIObject to handle spacing.

View File

@ -31,6 +31,8 @@
@property (nullable, weak, nonatomic) UIView *betweenView; @property (nullable, weak, nonatomic) UIView *betweenView;
@property (strong, nonatomic) UIView *topAccessoryView;
// Adds the button view to the screen. Out of the scroll or in. // Adds the button view to the screen. Out of the scroll or in.
- (void)addViewOutsideOfScrollView:(UIView *)bottomView; - (void)addViewOutsideOfScrollView:(UIView *)bottomView;
- (void)addViewToContentView:(UIView *)bottomView; - (void)addViewToContentView:(UIView *)bottomView;
@ -115,9 +117,19 @@
} }
[self.contentView addSubview:topView]; [self.contentView addSubview:topView];
[NSLayoutConstraint activateConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[topView]-0-|" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:NSDictionaryOfVariableBindings(topView)]]; [NSLayoutConstraint activateConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[topView]-0-|" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:NSDictionaryOfVariableBindings(topView)]];
self.topConstraintForTopView = [NSLayoutConstraint constraintWithItem:topView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeTop multiplier:1.0 constant:0];
self.topConstraintForTopView.active = YES;
UIView *topAccessoryView = [self topAccessoryView];
self.topAccessoryView = topAccessoryView;
if (topAccessoryView) {
[self.contentView addSubview:topAccessoryView];
[NSLayoutConstraint activateConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[topAccessoryView]-0-|" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:NSDictionaryOfVariableBindings(topAccessoryView)]];
self.topConstraintForTopView = [NSLayoutConstraint constraintWithItem:topAccessoryView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeTop multiplier:1.0 constant:0];
[topAccessoryView.bottomAnchor constraintEqualToAnchor:topView.topAnchor constant:0].active = YES;
} else {
self.topConstraintForTopView = [NSLayoutConstraint constraintWithItem:topView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeTop multiplier:1.0 constant:0];
}
self.topConstraintForTopView.active = YES;
// Checks if we are using a different object than the bottom buttons. // Checks if we are using a different object than the bottom buttons.
UIView *bottomView = [self useCustomViewInsteadOfButtons]; UIView *bottomView = [self useCustomViewInsteadOfButtons];
self.customBottemView = (bottomView != nil); self.customBottemView = (bottomView != nil);
@ -266,7 +278,10 @@
if (self.topLabelsView) { if (self.topLabelsView) {
[self.topLabelsView setHeadlineString:[[self mapForTopLabels] stringForKey:KeyTitle] messageString:[[self mapForTopLabels] stringForKey:KeyMessage]]; [self.topLabelsView setHeadlineString:[[self mapForTopLabels] stringForKey:KeyTitle] messageString:[[self mapForTopLabels] stringForKey:KeyMessage]];
} }
}
- (nullable UIView *)topAccessoryView {
return nil;
} }
- (void)updateViewConstraints { - (void)updateViewConstraints {
@ -409,6 +424,11 @@
#pragma mark - Animations #pragma mark - Animations
-(void)setupIntroAnimations { -(void)setupIntroAnimations {
if (self.topAccessoryView.subviews.count) {
[self.introAnimationManager addAnimationWithAnimation:[MVMAnimations fadeUpAnimationWithView:self.topAccessoryView]];
}
if (self.topView.subviews) { if (self.topView.subviews) {
[self.introAnimationManager addAnimationWithAnimation:[MVMAnimations fadeUpAnimationWithView:self.topView]]; [self.introAnimationManager addAnimationWithAnimation:[MVMAnimations fadeUpAnimationWithView:self.topView]];
} }