From ef56ed6cb3832a44bd0e5f71ab51db6549682474 Mon Sep 17 00:00:00 2001 From: "Pfeil, Scott Robert" Date: Fri, 18 Dec 2020 12:46:46 -0500 Subject: [PATCH] Margin and max header width --- .../Atomic/Molecules/HeadersAndFooters/Header.swift | 6 ++++++ .../HeadersAndFooters/MoleculeHeaderView.swift | 10 ++++++++++ MVMCoreUI/Styles/MFStyler.m | 8 ++++++-- MVMCoreUI/Styles/Padding.swift | 10 +++++++--- MVMCoreUI/Utility/Sizing/MFSizeObject.h | 1 + MVMCoreUI/Utility/Sizing/MFSizeObject.m | 2 ++ 6 files changed, 32 insertions(+), 5 deletions(-) diff --git a/MVMCoreUI/Atomic/Molecules/HeadersAndFooters/Header.swift b/MVMCoreUI/Atomic/Molecules/HeadersAndFooters/Header.swift index 63a13fbc..6c8e2c55 100644 --- a/MVMCoreUI/Atomic/Molecules/HeadersAndFooters/Header.swift +++ b/MVMCoreUI/Atomic/Molecules/HeadersAndFooters/Header.swift @@ -23,6 +23,12 @@ open class HeaderView: Container { addSubview(molecule) containerHelper.constrainView(molecule) self.molecule = molecule + guard let margins = molecule.superview?.layoutMarginsGuide else { return } + containerHelper.rightConstraint?.isActive = false + containerHelper.rightConstraint = margins.rightAnchor.constraint(equalTo: molecule.rightAnchor) + containerHelper.rightConstraint?.priority = .defaultHigh + containerHelper.rightConstraint?.isActive = true + molecule.widthAnchor.constraint(equalToConstant: 596).isActive = true } // MARK: - MVMCoreViewProtocol diff --git a/MVMCoreUI/Atomic/Molecules/HeadersAndFooters/MoleculeHeaderView.swift b/MVMCoreUI/Atomic/Molecules/HeadersAndFooters/MoleculeHeaderView.swift index 291540af..2d4f84ff 100644 --- a/MVMCoreUI/Atomic/Molecules/HeadersAndFooters/MoleculeHeaderView.swift +++ b/MVMCoreUI/Atomic/Molecules/HeadersAndFooters/MoleculeHeaderView.swift @@ -24,6 +24,16 @@ public class MoleculeHeaderView: MoleculeContainer { // MARK: - MVMCoreViewProtocol //-------------------------------------------------- + public override func addMolecule(_ molecule: UIView) { + super.addMolecule(molecule) + guard let margins = molecule.superview?.layoutMarginsGuide else { return } + containerHelper.rightConstraint?.isActive = false + containerHelper.rightConstraint = margins.rightAnchor.constraint(equalTo: molecule.rightAnchor) + containerHelper.rightConstraint?.priority = .defaultHigh + containerHelper.rightConstraint?.isActive = true + molecule.widthAnchor.constraint(lessThanOrEqualToConstant: 596).isActive = true + } + open override func updateView(_ size: CGFloat) { super.updateView(size) line.updateView(size) diff --git a/MVMCoreUI/Styles/MFStyler.m b/MVMCoreUI/Styles/MFStyler.m index e8d58a26..e1ffe314 100644 --- a/MVMCoreUI/Styles/MFStyler.m +++ b/MVMCoreUI/Styles/MFStyler.m @@ -77,7 +77,9 @@ CGFloat const LabelWithInternalButtonLineSpace = 2; #pragma mark - Spacing Defaults + (CGFloat)defaultHorizontalPaddingForApplicationWidth { - return [[MFSizeObject sizeObjectWithScalingStandardSize:PaddingDefaultHorizontalSpacing] getValueBasedOnApplicationWidth]; + MFSizeObject *sizeObject = [MFSizeObject sizeObjectWithStandardSize:16]; + [sizeObject addLargerThanCustomSize:32 forThreshold:MFSizeMostlySweetSpotThreshold]; + return [sizeObject getValueBasedOnApplicationWidth]; } + (CGFloat)defaultVerticalPaddingForApplicationWidth { @@ -85,7 +87,9 @@ CGFloat const LabelWithInternalButtonLineSpace = 2; } + (CGFloat)defaultHorizontalPaddingForSize:(CGFloat)size { - return [[MFSizeObject sizeObjectWithScalingStandardSize:PaddingDefaultHorizontalSpacing] getValueBasedOnSize:size]; + MFSizeObject *sizeObject = [MFSizeObject sizeObjectWithStandardSize:16]; + [sizeObject addLargerThanCustomSize:32 forThreshold:MFSizeMostlySweetSpotThreshold]; + return [sizeObject getValueBasedOnSize:size]; } + (CGFloat)defaultVerticalPaddingForSize:(CGFloat)size { diff --git a/MVMCoreUI/Styles/Padding.swift b/MVMCoreUI/Styles/Padding.swift index 0dd9ff6e..bc29882e 100644 --- a/MVMCoreUI/Styles/Padding.swift +++ b/MVMCoreUI/Styles/Padding.swift @@ -25,12 +25,14 @@ public struct Padding { public struct Component { public static let Standard: CGFloat = 24 - public static let HorizontalMarginSpacing: CGFloat = 32 + public static let HorizontalMarginSpacing: CGFloat = 16 public static let LargeVerticalMarginSpacing: CGFloat = 32 public static let VerticalMarginSpacing: CGFloat = 24 public static var horizontalPaddingForApplicationWidth: CGFloat { - return MFSizeObject(scalingStandardSize: HorizontalMarginSpacing)?.getValueBasedOnApplicationWidth() ?? HorizontalMarginSpacing + let sizeObject = MFSizeObject(standardSize: 16)! + sizeObject.addLargerThanCustomSize(32, forThreshold: MFSizeMostlySweetSpotThreshold) + return sizeObject.getValueBasedOnApplicationWidth() } public static var verticalPaddingForApplicationWidth: CGFloat { @@ -38,7 +40,9 @@ public struct Padding { } public static func horizontalPaddingForSize(_ size: CGFloat) -> CGFloat { - return MFSizeObject(scalingStandardSize: HorizontalMarginSpacing)?.getValueBased(onSize: size) ?? HorizontalMarginSpacing + let sizeObject = MFSizeObject(standardSize: 16)! + sizeObject.addLargerThanCustomSize(32, forThreshold: MFSizeMostlySweetSpotThreshold) + return sizeObject.getValueBased(onSize: size) } public static func verticalPaddingForSize(_ size: CGFloat) -> CGFloat { diff --git a/MVMCoreUI/Utility/Sizing/MFSizeObject.h b/MVMCoreUI/Utility/Sizing/MFSizeObject.h index 781feb4c..5c40dafe 100644 --- a/MVMCoreUI/Utility/Sizing/MFSizeObject.h +++ b/MVMCoreUI/Utility/Sizing/MFSizeObject.h @@ -17,6 +17,7 @@ extern CGFloat const MFSizeLargeiPhoneThreshold; extern CGFloat const MFSizeStandardiPadPortraitThreshold; extern CGFloat const MFSizeStandardiPadLandscapeThreshold; extern CGFloat const MFSizeiPadProLandscapeThreshold; +extern CGFloat const MFSizeMostlySweetSpotThreshold; @interface MFSizeObject : NSObject diff --git a/MVMCoreUI/Utility/Sizing/MFSizeObject.m b/MVMCoreUI/Utility/Sizing/MFSizeObject.m index 792e2d81..3379a1ce 100644 --- a/MVMCoreUI/Utility/Sizing/MFSizeObject.m +++ b/MVMCoreUI/Utility/Sizing/MFSizeObject.m @@ -18,6 +18,8 @@ CGFloat const MFSizeLargeiPhoneThreshold = 400; CGFloat const MFSizeStandardiPadPortraitThreshold = 600; CGFloat const MFSizeStandardiPadLandscapeThreshold = 1000; CGFloat const MFSizeiPadProLandscapeThreshold = 1300; +CGFloat const MFSizeMostlySweetSpotThreshold = 750; + @interface MFSizeObject ()