Skip to content

Commit

Permalink
Jwoo/ios column (microsoft#4918)
Browse files Browse the repository at this point in the history
* updated image renderer

* Final adjustment to vertical axis hugging priority
  • Loading branch information
jwoo-msft authored Oct 21, 2020
1 parent 08c10ff commit 0429fd7
Showing 1 changed file with 26 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#import "ACRImageRenderer.h"
#import "ACOBaseCardElementPrivate.h"
#import "ACOHostConfigPrivate.h"
#import "ACRColumnView.h"
#import "ACRContentHoldingUIView.h"
#import "ACRLongPressGestureRecognizerFactory.h"
#import "ACRUIImageView.h"
Expand Down Expand Up @@ -146,7 +147,7 @@ - (UIView *)render:(UIView<ACRIContentHoldingView> *)viewGroup
[view.centerXAnchor constraintEqualToAnchor:wrappingview.centerXAnchor].active = YES;
}

[wrappingview.heightAnchor constraintEqualToAnchor:view.heightAnchor].active = YES;
[wrappingview.heightAnchor constraintGreaterThanOrEqualToAnchor:view.heightAnchor].active = YES;
[wrappingview.widthAnchor constraintGreaterThanOrEqualToAnchor:view.widthAnchor].active = YES;

[view.topAnchor constraintEqualToAnchor:wrappingview.topAnchor].active = YES;
Expand All @@ -157,11 +158,13 @@ - (UIView *)render:(UIView<ACRIContentHoldingView> *)viewGroup
view.contentMode = UIViewContentModeScaleAspectFit;
}

UILayoutPriority imagePriority = [ACRImageRenderer getImageUILayoutPriority:wrappingview];

if (size != ImageSize::Stretch) {
[view setContentHuggingPriority:UILayoutPriorityDefaultHigh forAxis:UILayoutConstraintAxisHorizontal];
[view setContentHuggingPriority:imagePriority forAxis:UILayoutConstraintAxisHorizontal];
[view setContentHuggingPriority:UILayoutPriorityDefaultHigh forAxis:UILayoutConstraintAxisVertical];
[view setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
[view setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical];
[view setContentCompressionResistancePriority:imagePriority forAxis:UILayoutConstraintAxisHorizontal];
[view setContentCompressionResistancePriority:UILayoutPriorityDefaultHigh forAxis:UILayoutConstraintAxisVertical];
if (imgElem->GetHeight() == HeightType::Stretch) {
UIView *blankTrailingSpace = [[UIView alloc] init];
blankTrailingSpace.translatesAutoresizingMaskIntoConstraints = NO;
Expand Down Expand Up @@ -238,6 +241,7 @@ - (void)configUpdateForUIImageView:(ACOBaseCardElement *)acoElem config:(ACOHost
}

if (size != ImageSize::Auto && size != ImageSize::Stretch) {
UILayoutPriority prioirty = [ACRImageRenderer getImageUILayoutPriority:imageView.superview];
NSArray<NSLayoutConstraint *> *constraints =
@[ [NSLayoutConstraint constraintWithItem:imageView
attribute:NSLayoutAttributeWidth
Expand All @@ -253,8 +257,8 @@ - (void)configUpdateForUIImageView:(ACOBaseCardElement *)acoElem config:(ACOHost
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0
constant:cgsize.height] ];
constraints[0].priority = 1000;
constraints[1].priority = 1000;
constraints[0].priority = prioirty;
constraints[1].priority = UILayoutPriorityDefaultHigh;

[NSLayoutConstraint activateConstraints:constraints];
UIView *superview = imageView.superview;
Expand All @@ -264,6 +268,15 @@ - (void)configUpdateForUIImageView:(ACOBaseCardElement *)acoElem config:(ACOHost
}
}

if (size == AdaptiveCards::ImageSize::Auto) {
NSLayoutConstraint *imageHeightConstraint = [imageView.heightAnchor constraintLessThanOrEqualToConstant:image.size.height];
imageHeightConstraint.active = YES;
imageHeightConstraint.priority = UILayoutPriorityDefaultHigh;
NSLayoutConstraint *imageWidthConstraint = [imageView.widthAnchor constraintLessThanOrEqualToConstant:image.size.width];
imageWidthConstraint.active = YES;
imageWidthConstraint.priority = UILayoutPriorityDefaultHigh;
}

if (heightToWidthRatio && widthToHeightRatio && (size == ImageSize::Auto || size == ImageSize::Stretch)) {
NSArray<NSLayoutConstraint *> *constraints =
@[ [NSLayoutConstraint constraintWithItem:imageView
Expand All @@ -280,8 +293,8 @@ - (void)configUpdateForUIImageView:(ACOBaseCardElement *)acoElem config:(ACOHost
attribute:NSLayoutAttributeHeight
multiplier:widthToHeightRatio
constant:0] ];
constraints[0].priority = 999;
constraints[1].priority = 1000;
constraints[0].priority = UILayoutPriorityDefaultHigh;
constraints[1].priority = UILayoutPriorityDefaultHigh;

[NSLayoutConstraint activateConstraints:constraints];

Expand All @@ -291,4 +304,9 @@ - (void)configUpdateForUIImageView:(ACOBaseCardElement *)acoElem config:(ACOHost
}
}

+ (UILayoutPriority)getImageUILayoutPriority:(UIView *)wrappingview
{
return (!wrappingview || [wrappingview contentHuggingPriorityForAxis:UILayoutConstraintAxisHorizontal] > ACRColumnWidthPriorityStretch) ? UILayoutPriorityDefaultHigh : ACRColumnWidthPriorityAuto;
}

@end

0 comments on commit 0429fd7

Please sign in to comment.