From 33d9b6dbc37fb8f85e00270cd01aaf600b8ef495 Mon Sep 17 00:00:00 2001 From: aleh Date: Mon, 10 Jun 2024 13:59:31 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20mediamon?= =?UTF-8?q?ks/MMMCommonUI@30ac40f4eab57cc1c3dce1274a3b07ac4c62a3c5=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Categories.html | 541 ------ Categories/NSLayoutConstraint(MMMTemple).html | 725 ------- Categories/UILayoutGuide(MMMTemple).html | 498 ----- .../UIView(MMMPreferredSizeChanges).html | 366 ---- Categories/UIView(MMMTemple).html | 1343 ------------- Classes.html | 1552 --------------- Classes/MMMAnimation.html | 614 ------ Classes/MMMAnimationHandle.html | 424 ----- Classes/MMMAnimator.html | 531 ------ Classes/MMMAutoLayoutIsolator.html | 486 ----- Classes/MMMAutoLayoutScrollView.html | 506 ----- Classes/MMMCollectionView.html | 485 ----- Classes/MMMContainerView.html | 425 ----- Classes/MMMHorizontalStackContainer.html | 396 ---- Classes/MMMImageView.html | 586 ------ Classes/MMMLayoutUtils.html | 512 ----- Classes/MMMNavigation.html | 476 ----- Classes/MMMNavigationHop.html | 494 ----- Classes/MMMNavigationPath.html | 520 ----- Classes/MMMNavigationRequest.html | 459 ----- Classes/MMMNavigationStack.html | 450 ----- Classes/MMMPaddedView.html | 517 ----- Classes/MMMScrollViewShadowView.html | 456 ----- Classes/MMMScrollViewShadows.html | 494 ----- Classes/MMMScrollViewShadowsSettings.html | 666 ------- Classes/MMMShadowView.html | 518 ----- Classes/MMMShadowViewSetting.html | 616 ------ Classes/MMMSpacerView.html | 425 ----- Classes/MMMStackContainer.html | 493 ----- Classes/MMMStubView.html | 455 ----- Classes/MMMStubViewController.html | 453 ----- Classes/MMMStylesheet.html | 934 --------- Classes/MMMStylesheetScaleConverter.html | 436 ----- Classes/MMMTableView.html | 551 ------ Classes/MMMTableViewCell.html | 485 ----- Classes/MMMVelocityMeter.html | 458 ----- Classes/MMMVerticalGradientView.html | 486 ----- Classes/MMMVerticalStackContainer.html | 396 ---- Classes/MMMViewWrappingCell.html | 460 ----- Classes/MMMWebView.html | 516 ----- Constants.html | 540 ------ Enums.html | 565 ------ Enums/MMMAnimationCurve.html | 967 ---------- Enums/MMMLayoutAlignment.html | 520 ----- Enums/MMMLayoutDirection.html | 395 ---- Enums/MMMLayoutHorizontalAlignment.html | 527 ----- Enums/MMMLayoutVerticalAlignment.html | 527 ----- Enums/MMMScrollViewShadowAlignment.html | 395 ---- Functions.html | 527 ----- Protocols.html | 493 ----- Protocols/MMMNavigationHandler.html | 362 ---- Protocols/MMMNavigationStackItem.html | 433 ----- Protocols/MMMNavigationStackItemDelegate.html | 366 ---- Protocols/MMMPreferredSizeChanges.html | 366 ---- Protocols/MMMStylesheetConverter.html | 365 ---- Type Definitions.html | 545 ------ badge.svg | 16 +- .../Resources/Documents/Categories.html | 541 ------ .../NSLayoutConstraint(MMMTemple).html | 725 ------- .../Categories/UILayoutGuide(MMMTemple).html | 498 ----- .../UIView(MMMPreferredSizeChanges).html | 366 ---- .../Categories/UIView(MMMTemple).html | 1343 ------------- .../Contents/Resources/Documents/Classes.html | 1552 --------------- .../Documents/Classes/MMMAnimation.html | 614 ------ .../Documents/Classes/MMMAnimationHandle.html | 424 ----- .../Documents/Classes/MMMAnimator.html | 531 ------ .../Classes/MMMAutoLayoutIsolator.html | 486 ----- .../Classes/MMMAutoLayoutScrollView.html | 506 ----- .../Documents/Classes/MMMCollectionView.html | 485 ----- .../Documents/Classes/MMMContainerView.html | 425 ----- .../Classes/MMMHorizontalStackContainer.html | 396 ---- .../Documents/Classes/MMMImageView.html | 586 ------ .../Documents/Classes/MMMLayoutUtils.html | 512 ----- .../Documents/Classes/MMMNavigation.html | 476 ----- .../Documents/Classes/MMMNavigationHop.html | 494 ----- .../Documents/Classes/MMMNavigationPath.html | 520 ----- .../Classes/MMMNavigationRequest.html | 459 ----- .../Documents/Classes/MMMNavigationStack.html | 450 ----- .../Documents/Classes/MMMPaddedView.html | 517 ----- .../Classes/MMMScrollViewShadowView.html | 456 ----- .../Classes/MMMScrollViewShadows.html | 494 ----- .../Classes/MMMScrollViewShadowsSettings.html | 666 ------- .../Documents/Classes/MMMShadowView.html | 518 ----- .../Classes/MMMShadowViewSetting.html | 616 ------ .../Documents/Classes/MMMSpacerView.html | 425 ----- .../Documents/Classes/MMMStackContainer.html | 493 ----- .../Documents/Classes/MMMStubView.html | 455 ----- .../Classes/MMMStubViewController.html | 453 ----- .../Documents/Classes/MMMStylesheet.html | 934 --------- .../Classes/MMMStylesheetScaleConverter.html | 436 ----- .../Documents/Classes/MMMTableView.html | 551 ------ .../Documents/Classes/MMMTableViewCell.html | 485 ----- .../Documents/Classes/MMMVelocityMeter.html | 458 ----- .../Classes/MMMVerticalGradientView.html | 486 ----- .../Classes/MMMVerticalStackContainer.html | 396 ---- .../Classes/MMMViewWrappingCell.html | 460 ----- .../Documents/Classes/MMMWebView.html | 516 ----- .../Resources/Documents/Constants.html | 540 ------ .../Contents/Resources/Documents/Enums.html | 565 ------ .../Documents/Enums/MMMAnimationCurve.html | 967 ---------- .../Documents/Enums/MMMLayoutAlignment.html | 520 ----- .../Documents/Enums/MMMLayoutDirection.html | 395 ---- .../Enums/MMMLayoutHorizontalAlignment.html | 527 ----- .../Enums/MMMLayoutVerticalAlignment.html | 527 ----- .../Enums/MMMScrollViewShadowAlignment.html | 395 ---- .../Resources/Documents/Functions.html | 527 ----- .../Resources/Documents/Protocols.html | 493 ----- .../Protocols/MMMNavigationHandler.html | 362 ---- .../Protocols/MMMNavigationStackItem.html | 433 ----- .../MMMNavigationStackItemDelegate.html | 366 ---- .../Protocols/MMMPreferredSizeChanges.html | 366 ---- .../Protocols/MMMStylesheetConverter.html | 365 ---- .../Resources/Documents/Type Definitions.html | 545 ------ .../Contents/Resources/Documents/index.html | 244 +-- .../Contents/Resources/Documents/search.json | 2 +- .../Contents/Resources/docSet.dsidx | Bin 102400 -> 12288 bytes docsets/MMMCommonUI.tgz | Bin 201051 -> 85497 bytes index.html | 244 +-- search.json | 2 +- undocumented.json | 1688 +---------------- 120 files changed, 13 insertions(+), 62377 deletions(-) delete mode 100644 Categories.html delete mode 100644 Categories/NSLayoutConstraint(MMMTemple).html delete mode 100644 Categories/UILayoutGuide(MMMTemple).html delete mode 100644 Categories/UIView(MMMPreferredSizeChanges).html delete mode 100644 Categories/UIView(MMMTemple).html delete mode 100644 Classes.html delete mode 100644 Classes/MMMAnimation.html delete mode 100644 Classes/MMMAnimationHandle.html delete mode 100644 Classes/MMMAnimator.html delete mode 100644 Classes/MMMAutoLayoutIsolator.html delete mode 100644 Classes/MMMAutoLayoutScrollView.html delete mode 100644 Classes/MMMCollectionView.html delete mode 100644 Classes/MMMContainerView.html delete mode 100644 Classes/MMMHorizontalStackContainer.html delete mode 100644 Classes/MMMImageView.html delete mode 100644 Classes/MMMLayoutUtils.html delete mode 100644 Classes/MMMNavigation.html delete mode 100644 Classes/MMMNavigationHop.html delete mode 100644 Classes/MMMNavigationPath.html delete mode 100644 Classes/MMMNavigationRequest.html delete mode 100644 Classes/MMMNavigationStack.html delete mode 100644 Classes/MMMPaddedView.html delete mode 100644 Classes/MMMScrollViewShadowView.html delete mode 100644 Classes/MMMScrollViewShadows.html delete mode 100644 Classes/MMMScrollViewShadowsSettings.html delete mode 100644 Classes/MMMShadowView.html delete mode 100644 Classes/MMMShadowViewSetting.html delete mode 100644 Classes/MMMSpacerView.html delete mode 100644 Classes/MMMStackContainer.html delete mode 100644 Classes/MMMStubView.html delete mode 100644 Classes/MMMStubViewController.html delete mode 100644 Classes/MMMStylesheet.html delete mode 100644 Classes/MMMStylesheetScaleConverter.html delete mode 100644 Classes/MMMTableView.html delete mode 100644 Classes/MMMTableViewCell.html delete mode 100644 Classes/MMMVelocityMeter.html delete mode 100644 Classes/MMMVerticalGradientView.html delete mode 100644 Classes/MMMVerticalStackContainer.html delete mode 100644 Classes/MMMViewWrappingCell.html delete mode 100644 Classes/MMMWebView.html delete mode 100644 Constants.html delete mode 100644 Enums.html delete mode 100644 Enums/MMMAnimationCurve.html delete mode 100644 Enums/MMMLayoutAlignment.html delete mode 100644 Enums/MMMLayoutDirection.html delete mode 100644 Enums/MMMLayoutHorizontalAlignment.html delete mode 100644 Enums/MMMLayoutVerticalAlignment.html delete mode 100644 Enums/MMMScrollViewShadowAlignment.html delete mode 100644 Functions.html delete mode 100644 Protocols.html delete mode 100644 Protocols/MMMNavigationHandler.html delete mode 100644 Protocols/MMMNavigationStackItem.html delete mode 100644 Protocols/MMMNavigationStackItemDelegate.html delete mode 100644 Protocols/MMMPreferredSizeChanges.html delete mode 100644 Protocols/MMMStylesheetConverter.html delete mode 100644 Type Definitions.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Categories.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Categories/NSLayoutConstraint(MMMTemple).html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Categories/UILayoutGuide(MMMTemple).html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Categories/UIView(MMMPreferredSizeChanges).html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Categories/UIView(MMMTemple).html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMAnimation.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMAnimationHandle.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMAnimator.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMAutoLayoutIsolator.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMAutoLayoutScrollView.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMCollectionView.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMContainerView.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMHorizontalStackContainer.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMImageView.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMLayoutUtils.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMNavigation.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMNavigationHop.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMNavigationPath.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMNavigationRequest.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMNavigationStack.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMPaddedView.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMScrollViewShadowView.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMScrollViewShadows.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMScrollViewShadowsSettings.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMShadowView.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMShadowViewSetting.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMSpacerView.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMStackContainer.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMStubView.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMStubViewController.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMStylesheet.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMStylesheetScaleConverter.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMTableView.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMTableViewCell.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMVelocityMeter.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMVerticalGradientView.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMVerticalStackContainer.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMViewWrappingCell.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMWebView.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Constants.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Enums.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Enums/MMMAnimationCurve.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Enums/MMMLayoutAlignment.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Enums/MMMLayoutDirection.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Enums/MMMLayoutHorizontalAlignment.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Enums/MMMLayoutVerticalAlignment.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Enums/MMMScrollViewShadowAlignment.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Functions.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Protocols.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Protocols/MMMNavigationHandler.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Protocols/MMMNavigationStackItem.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Protocols/MMMNavigationStackItemDelegate.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Protocols/MMMPreferredSizeChanges.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Protocols/MMMStylesheetConverter.html delete mode 100644 docsets/MMMCommonUI.docset/Contents/Resources/Documents/Type Definitions.html diff --git a/Categories.html b/Categories.html deleted file mode 100644 index a8f38b2..0000000 --- a/Categories.html +++ /dev/null @@ -1,541 +0,0 @@ - - - - Categories Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

Categories

-

The following categories are available globally.

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface UIView (MMMPreferredSizeChanges)
    -
    -/// Signals to one of the interested parent views (supporting `MMMPreferredSizeChanges`)
    -/// that the size of this view could have potentially changed and they should measure things again.
    -///
    -/// This helps with containers that do not primarily rely on Auto Layout, like UITableView.
    -- (void)mmm_setPreferredSizeCouldChange;
    -
    -@end
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface UILayoutGuide (MMMTemple)
    -
    -/// Convenience initializer setting the guide's identifier.
    -- (id)initWithIdentifier:(NSString *)identifier;
    -
    -/**
    - * Not yet activated constraints anchoring the given view within the receiver according to horizontal
    - * and vertical alignment flags.
    - */
    -- (NSArray<NSLayoutConstraint *> *)mmm_constraintsAligningView:(UIView *)view
    -	horizontally:(MMMLayoutHorizontalAlignment)horizontalAlignment
    -	vertically:(MMMLayoutVerticalAlignment)verticalAlignment
    -	insets:(UIEdgeInsets)insets NS_SWIFT_NAME(mmm_constraints(aligning:horizontally:vertically:insets:));
    -
    -- (NSArray<NSLayoutConstraint *> *)mmm_constraintsAligningGuide:(UILayoutGuide *)guide
    -	horizontally:(MMMLayoutHorizontalAlignment)horizontalAlignment
    -	vertically:(MMMLayoutVerticalAlignment)verticalAlignment
    -	insets:(UIEdgeInsets)insets NS_SWIFT_NAME(mmm_constraints(aligning:horizontally:vertically:insets:));
    -
    -/**
    - * Not yet activated constraints implementing a common layout idiom used with text:
    - * - the given view is centered within the receiver,
    - * - certain minimum padding is ensured on the sides,
    - * - if `maxWidth > 0`, then the width of the view is limited to `maxWidth`, so it does not grow too wide e.g. on iPad.
    - */
    -- (NSArray<NSLayoutConstraint *> *)mmm_constraintsHorizontallyCenteringView:(UIView *)view
    -	minPadding:(CGFloat)minPadding
    -	maxWidth:(CGFloat)maxWidth NS_SWIFT_NAME(mmm_constraints(horizontallyCentering:minPadding:maxWidth:));
    -
    -@end
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - UIView(MMMTemple) - -
    -
    -
    -
    -
    -
    -

    A few shorthands for UIView.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface UIView (MMMTemple)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface NSLayoutConstraint (MMMTemple)
    -
    -/**
    - * Our wrapper over the corresponding method of NSLayoutConstraint extending the visual layout language a bit to support
    - * `safeAreaLayoutGuide` property introduced in iOS 11 and still be compatible with older versions of iOS.
    - * (See also `mmm_safeAreaLayoutGuide` in our extension of UIView.)
    - *
    - * To use it simply replace a reference to the superview edge "|" with a reference to a safe edge "<|".
    - *
    - * For example, if you have the following pre iOS 9 code:
    - *
    - * \code
    - * [NSLayoutConstraint activateConstraints:[NSLayoutConstraint
    - *     constraintsWithVisualFormat:@"V:[_button]-(normalPadding)-|"
    - *     options:0 metrics:metrics views:views
    - * ]];
    - * \endcode
    - *
    - * And now you want to make sure that the button sits above the safe bottom margin on iPhone X, then do this:
    - *
    - * \code
    - * [NSLayoutConstraint activateConstraints:[NSLayoutConstraint
    - *     mmm_constraintsWithVisualFormat:@"V:[_button]-(normalPadding)-<|"
    - *     options:0 metrics:metrics views:views
    - * ]];
    - * \endcode
    - *
    - * That's it. It'll anchor the button to the bottom of its superview on iOS 9 and 10, but anchor it to the bottom of
    - * its safeAreaLayoutGuide on iOS 11.
    - *
    - * Please note that using "|>" to pin to the top won't exclude the status bar on iOS 9 and 10.
    - */
    -+ (NSArray<NSLayoutConstraint *> *)mmm_constraintsWithVisualFormat:(NSString *)format
    -	options:(NSLayoutFormatOptions)opts
    -	metrics:(nullable NSDictionary<NSString *,id> *)metrics
    -	views:(nullable NSDictionary<NSString *,id> *)views;
    -
    -/** A shortcut for `[NSLayoutConstraint activateConstraints:[NSLayoutConstraint mmm_constraintsWithVisualFormat:...`. */
    -+ (void)mmm_activateConstraintsWithVisualFormat:(NSString *)format
    -	options:(NSLayoutFormatOptions)opts
    -	metrics:(nullable NSDictionary<NSString *,id> *)metrics
    -	views:(nullable NSDictionary<NSString *,id> *)views;
    -
    -/** Missing counterparts for (de)activateConstraints, so constraint activation code looks the same for individual constraints. */
    -+ (void)activateConstraint:(NSLayoutConstraint *)constraint;
    -+ (void)deactivateConstraint:(NSLayoutConstraint *)constraint;
    -
    -/** A missing convenience initializer including priority. */
    -+ (instancetype)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1
    -	relatedBy:(NSLayoutRelation)relation
    -	toItem:(nullable id)view2 attribute:(NSLayoutAttribute)attr2
    -	multiplier:(CGFloat)multiplier constant:(CGFloat)c
    -	priority:(UILayoutPriority)priority;
    -
    -/** A missing convenience initializer allowing to set identifier for this constraint. */
    -+ (instancetype)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1
    -	relatedBy:(NSLayoutRelation)relation
    -	toItem:(nullable id)view2 attribute:(NSLayoutAttribute)attr2
    -	multiplier:(CGFloat)multiplier constant:(CGFloat)c
    -	identifier:(NSString *)identifier;
    -
    -/** A missing convenience initializer allowing to set both priority and identifier for this constraint. */
    -+ (instancetype)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1
    -	relatedBy:(NSLayoutRelation)relation
    -	toItem:(nullable id)view2 attribute:(NSLayoutAttribute)attr2
    -	multiplier:(CGFloat)multiplier constant:(CGFloat)c
    -	priority:(UILayoutPriority)priority
    -	identifier:(NSString *)identifier;
    -
    -/** A missing convenience initializer allowing to tag a bunch of visual constraints with the same identifier. */
    -+ (NSArray<__kindof NSLayoutConstraint *> *)constraintsWithVisualFormat:(NSString *)format
    -	options:(NSLayoutFormatOptions)opts
    -	metrics:(nullable NSDictionary<NSString *,id> *)metrics
    -	views:(nullable NSDictionary<NSString *, id> *)views
    -	identifier:(NSString *)identifier DEPRECATED_ATTRIBUTE;
    -
    -@end
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Categories/NSLayoutConstraint(MMMTemple).html b/Categories/NSLayoutConstraint(MMMTemple).html deleted file mode 100644 index d90e786..0000000 --- a/Categories/NSLayoutConstraint(MMMTemple).html +++ /dev/null @@ -1,725 +0,0 @@ - - - - NSLayoutConstraint(MMMTemple) Category Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

NSLayoutConstraint(MMMTemple)

-
-
- -
@interface NSLayoutConstraint (MMMTemple)
-
-/**
- * Our wrapper over the corresponding method of NSLayoutConstraint extending the visual layout language a bit to support
- * `safeAreaLayoutGuide` property introduced in iOS 11 and still be compatible with older versions of iOS.
- * (See also `mmm_safeAreaLayoutGuide` in our extension of UIView.)
- *
- * To use it simply replace a reference to the superview edge "|" with a reference to a safe edge "<|".
- *
- * For example, if you have the following pre iOS 9 code:
- *
- * \code
- * [NSLayoutConstraint activateConstraints:[NSLayoutConstraint
- *     constraintsWithVisualFormat:@"V:[_button]-(normalPadding)-|"
- *     options:0 metrics:metrics views:views
- * ]];
- * \endcode
- *
- * And now you want to make sure that the button sits above the safe bottom margin on iPhone X, then do this:
- *
- * \code
- * [NSLayoutConstraint activateConstraints:[NSLayoutConstraint
- *     mmm_constraintsWithVisualFormat:@"V:[_button]-(normalPadding)-<|"
- *     options:0 metrics:metrics views:views
- * ]];
- * \endcode
- *
- * That's it. It'll anchor the button to the bottom of its superview on iOS 9 and 10, but anchor it to the bottom of
- * its safeAreaLayoutGuide on iOS 11.
- *
- * Please note that using "|>" to pin to the top won't exclude the status bar on iOS 9 and 10.
- */
-+ (NSArray<NSLayoutConstraint *> *)mmm_constraintsWithVisualFormat:(NSString *)format
-	options:(NSLayoutFormatOptions)opts
-	metrics:(nullable NSDictionary<NSString *,id> *)metrics
-	views:(nullable NSDictionary<NSString *,id> *)views;
-
-/** A shortcut for `[NSLayoutConstraint activateConstraints:[NSLayoutConstraint mmm_constraintsWithVisualFormat:...`. */
-+ (void)mmm_activateConstraintsWithVisualFormat:(NSString *)format
-	options:(NSLayoutFormatOptions)opts
-	metrics:(nullable NSDictionary<NSString *,id> *)metrics
-	views:(nullable NSDictionary<NSString *,id> *)views;
-
-/** Missing counterparts for (de)activateConstraints, so constraint activation code looks the same for individual constraints. */
-+ (void)activateConstraint:(NSLayoutConstraint *)constraint;
-+ (void)deactivateConstraint:(NSLayoutConstraint *)constraint;
-
-/** A missing convenience initializer including priority. */
-+ (instancetype)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1
-	relatedBy:(NSLayoutRelation)relation
-	toItem:(nullable id)view2 attribute:(NSLayoutAttribute)attr2
-	multiplier:(CGFloat)multiplier constant:(CGFloat)c
-	priority:(UILayoutPriority)priority;
-
-/** A missing convenience initializer allowing to set identifier for this constraint. */
-+ (instancetype)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1
-	relatedBy:(NSLayoutRelation)relation
-	toItem:(nullable id)view2 attribute:(NSLayoutAttribute)attr2
-	multiplier:(CGFloat)multiplier constant:(CGFloat)c
-	identifier:(NSString *)identifier;
-
-/** A missing convenience initializer allowing to set both priority and identifier for this constraint. */
-+ (instancetype)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1
-	relatedBy:(NSLayoutRelation)relation
-	toItem:(nullable id)view2 attribute:(NSLayoutAttribute)attr2
-	multiplier:(CGFloat)multiplier constant:(CGFloat)c
-	priority:(UILayoutPriority)priority
-	identifier:(NSString *)identifier;
-
-/** A missing convenience initializer allowing to tag a bunch of visual constraints with the same identifier. */
-+ (NSArray<__kindof NSLayoutConstraint *> *)constraintsWithVisualFormat:(NSString *)format
-	options:(NSLayoutFormatOptions)opts
-	metrics:(nullable NSDictionary<NSString *,id> *)metrics
-	views:(nullable NSDictionary<NSString *, id> *)views
-	identifier:(NSString *)identifier DEPRECATED_ATTRIBUTE;
-
-@end
- -
-
-

Undocumented

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Our wrapper over the corresponding method of NSLayoutConstraint extending the visual layout language a bit to support - safeAreaLayoutGuide property introduced in iOS 11 and still be compatible with older versions of iOS. - (See also mmm_safeAreaLayoutGuide in our extension of UIView.)

    - -

    To use it simply replace a reference to the superview edge “|” with a reference to a safe edge “<|”.

    - -

    For example, if you have the following pre iOS 9 code:

    - -

    \code - [NSLayoutConstraint activateConstraints:[NSLayoutConstraint - constraintsWithVisualFormat:@“V:[_button]-(normalPadding)-|” - options:0 metrics:metrics views:views - ]]; - \endcode

    - -

    And now you want to make sure that the button sits above the safe bottom margin on iPhone X, then do this:

    - -

    \code - [NSLayoutConstraint activateConstraints:[NSLayoutConstraint - mmm_constraintsWithVisualFormat:@“V:[_button]-(normalPadding)-<|” - options:0 metrics:metrics views:views - ]]; - \endcode

    - -

    That’s it. It’ll anchor the button to the bottom of its superview on iOS 9 and 10, but anchor it to the bottom of - its safeAreaLayoutGuide on iOS 11.

    - -

    Please note that using “|>” to pin to the top won’t exclude the status bar on iOS 9 and 10.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (nonnull NSArray<NSLayoutConstraint *> *)
    -    mmm_constraintsWithVisualFormat:(nonnull NSString *)format
    -                            options:(NSLayoutFormatOptions)opts
    -                            metrics:
    -                                (nullable NSDictionary<NSString *, id> *)metrics
    -                              views:(nullable NSDictionary<NSString *, id> *)
    -                                        views;
    - -
    -
    -

    Swift

    -
    class func mmm_constraints(withVisualFormat format: String, options opts: NSLayoutConstraint.FormatOptions = [], metrics: [String : Any]?, views: [String : Any]?) -> [NSLayoutConstraint]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A shortcut for [NSLayoutConstraint activateConstraints:[NSLayoutConstraint mmm_constraintsWithVisualFormat:....

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (void)
    -    mmm_activateConstraintsWithVisualFormat:(nonnull NSString *)format
    -                                    options:(NSLayoutFormatOptions)opts
    -                                    metrics:(nullable NSDictionary<NSString *,
    -                                                                   id> *)metrics
    -                                      views:(nullable NSDictionary<NSString *,
    -                                                                   id> *)views;
    - -
    -
    -

    Swift

    -
    class func mmm_activateConstraints(withVisualFormat format: String, options opts: NSLayoutConstraint.FormatOptions = [], metrics: [String : Any]?, views: [String : Any]?)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - +activateConstraint: - -
    -
    -
    -
    -
    -
    -

    Missing counterparts for (de)activateConstraints, so constraint activation code looks the same for individual constraints.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (void)activateConstraint:(nonnull NSLayoutConstraint *)constraint;
    - -
    -
    -

    Swift

    -
    class func activate(_ constraint: NSLayoutConstraint)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (void)deactivateConstraint:(NSLayoutConstraint *)constraint;
    - -
    -
    -

    Swift

    -
    class func deactivate(_ constraint: NSLayoutConstraint)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A missing convenience initializer including priority.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (nonnull instancetype)constraintWithItem:(nonnull id)view1
    -                                 attribute:(NSLayoutAttribute)attr1
    -                                 relatedBy:(NSLayoutRelation)relation
    -                                    toItem:(nullable id)view2
    -                                 attribute:(NSLayoutAttribute)attr2
    -                                multiplier:(CGFloat)multiplier
    -                                  constant:(CGFloat)c
    -                                  priority:(UILayoutPriority)priority;
    - -
    -
    -

    Swift

    -
    convenience init(item view1: Any, attribute attr1: NSLayoutConstraint.Attribute, relatedBy relation: NSLayoutConstraint.Relation, toItem view2: Any?, attribute attr2: NSLayoutConstraint.Attribute, multiplier: CGFloat, constant c: CGFloat, priority: UILayoutPriority)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A missing convenience initializer allowing to set identifier for this constraint.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (nonnull instancetype)constraintWithItem:(nonnull id)view1
    -                                 attribute:(NSLayoutAttribute)attr1
    -                                 relatedBy:(NSLayoutRelation)relation
    -                                    toItem:(nullable id)view2
    -                                 attribute:(NSLayoutAttribute)attr2
    -                                multiplier:(CGFloat)multiplier
    -                                  constant:(CGFloat)c
    -                                identifier:(nonnull NSString *)identifier;
    - -
    -
    -

    Swift

    -
    convenience init(item view1: Any, attribute attr1: NSLayoutConstraint.Attribute, relatedBy relation: NSLayoutConstraint.Relation, toItem view2: Any?, attribute attr2: NSLayoutConstraint.Attribute, multiplier: CGFloat, constant c: CGFloat, identifier: String)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A missing convenience initializer allowing to set both priority and identifier for this constraint.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (nonnull instancetype)constraintWithItem:(nonnull id)view1
    -                                 attribute:(NSLayoutAttribute)attr1
    -                                 relatedBy:(NSLayoutRelation)relation
    -                                    toItem:(nullable id)view2
    -                                 attribute:(NSLayoutAttribute)attr2
    -                                multiplier:(CGFloat)multiplier
    -                                  constant:(CGFloat)c
    -                                  priority:(UILayoutPriority)priority
    -                                identifier:(nonnull NSString *)identifier;
    - -
    -
    -

    Swift

    -
    convenience init(item view1: Any, attribute attr1: NSLayoutConstraint.Attribute, relatedBy relation: NSLayoutConstraint.Relation, toItem view2: Any?, attribute attr2: NSLayoutConstraint.Attribute, multiplier: CGFloat, constant c: CGFloat, priority: UILayoutPriority, identifier: String)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Deprecated

    - -
    -
    -

    A missing convenience initializer allowing to tag a bunch of visual constraints with the same identifier.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (nonnull NSArray<__kindof NSLayoutConstraint *> *)
    -    constraintsWithVisualFormat:(nonnull NSString *)format
    -                        options:(NSLayoutFormatOptions)opts
    -                        metrics:(nullable NSDictionary<NSString *, id> *)metrics
    -                          views:(nullable NSDictionary<NSString *, id> *)views
    -                     identifier:(nonnull NSString *)identifier;
    - -
    -
    -

    Swift

    -
    class func constraints(withVisualFormat format: String, options opts: NSLayoutConstraint.FormatOptions = [], metrics: [String : Any]?, views: [String : Any]?, identifier: String) -> [NSLayoutConstraint]
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Categories/UILayoutGuide(MMMTemple).html b/Categories/UILayoutGuide(MMMTemple).html deleted file mode 100644 index aacdd26..0000000 --- a/Categories/UILayoutGuide(MMMTemple).html +++ /dev/null @@ -1,498 +0,0 @@ - - - - UILayoutGuide(MMMTemple) Category Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

UILayoutGuide(MMMTemple)

-
-
- -
@interface UILayoutGuide (MMMTemple)
-
-/// Convenience initializer setting the guide's identifier.
-- (id)initWithIdentifier:(NSString *)identifier;
-
-/**
- * Not yet activated constraints anchoring the given view within the receiver according to horizontal
- * and vertical alignment flags.
- */
-- (NSArray<NSLayoutConstraint *> *)mmm_constraintsAligningView:(UIView *)view
-	horizontally:(MMMLayoutHorizontalAlignment)horizontalAlignment
-	vertically:(MMMLayoutVerticalAlignment)verticalAlignment
-	insets:(UIEdgeInsets)insets NS_SWIFT_NAME(mmm_constraints(aligning:horizontally:vertically:insets:));
-
-- (NSArray<NSLayoutConstraint *> *)mmm_constraintsAligningGuide:(UILayoutGuide *)guide
-	horizontally:(MMMLayoutHorizontalAlignment)horizontalAlignment
-	vertically:(MMMLayoutVerticalAlignment)verticalAlignment
-	insets:(UIEdgeInsets)insets NS_SWIFT_NAME(mmm_constraints(aligning:horizontally:vertically:insets:));
-
-/**
- * Not yet activated constraints implementing a common layout idiom used with text:
- * - the given view is centered within the receiver,
- * - certain minimum padding is ensured on the sides,
- * - if `maxWidth > 0`, then the width of the view is limited to `maxWidth`, so it does not grow too wide e.g. on iPad.
- */
-- (NSArray<NSLayoutConstraint *> *)mmm_constraintsHorizontallyCenteringView:(UIView *)view
-	minPadding:(CGFloat)minPadding
-	maxWidth:(CGFloat)maxWidth NS_SWIFT_NAME(mmm_constraints(horizontallyCentering:minPadding:maxWidth:));
-
-@end
- -
-
-

Undocumented

- -
-
- -
-
-
-
    -
  • -
    - - - - -initWithIdentifier: - -
    -
    -
    -
    -
    -
    -

    Convenience initializer setting the guide’s identifier.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)initWithIdentifier:(nonnull NSString *)identifier;
    - -
    -
    -

    Swift

    -
    init(identifier: String)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Not yet activated constraints anchoring the given view within the receiver according to horizontal -and vertical alignment flags.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull NSArray<NSLayoutConstraint *> *)
    -    mmm_constraintsAligningView:(nonnull UIView *)view
    -                   horizontally:
    -                       (MMMLayoutHorizontalAlignment)horizontalAlignment
    -                     vertically:(MMMLayoutVerticalAlignment)verticalAlignment
    -                         insets:(UIEdgeInsets)insets;
    - -
    -
    -

    Swift

    -
    func mmm_constraints(aligning view: UIView, horizontally horizontalAlignment: MMMLayoutHorizontalAlignment, vertically verticalAlignment: MMMLayoutVerticalAlignment, insets: UIEdgeInsets) -> [NSLayoutConstraint]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (NSArray<NSLayoutConstraint *> *)mmm_constraintsAligningGuide:(UILayoutGuide *)guide
    -	horizontally:(MMMLayoutHorizontalAlignment)horizontalAlignment
    -	vertically:(MMMLayoutVerticalAlignment)verticalAlignment
    -	insets:(UIEdgeInsets)insets NS_SWIFT_NAME(mmm_constraints(aligning:horizontally:vertically:insets:));
    - -
    -
    -

    Swift

    -
    func mmm_constraints(aligning guide: UILayoutGuide, horizontally horizontalAlignment: MMMLayoutHorizontalAlignment, vertically verticalAlignment: MMMLayoutVerticalAlignment, insets: UIEdgeInsets) -> [NSLayoutConstraint]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Not yet activated constraints implementing a common layout idiom used with text:

    - -
      -
    • the given view is centered within the receiver,
    • -
    • certain minimum padding is ensured on the sides,
    • -
    • if maxWidth > 0, then the width of the view is limited to maxWidth, so it does not grow too wide e.g. on iPad.
    • -
    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull NSArray<NSLayoutConstraint *> *)
    -    mmm_constraintsHorizontallyCenteringView:(nonnull UIView *)view
    -                                  minPadding:(CGFloat)minPadding
    -                                    maxWidth:(CGFloat)maxWidth;
    - -
    -
    -

    Swift

    -
    func mmm_constraints(horizontallyCentering view: UIView, minPadding: CGFloat, maxWidth: CGFloat) -> [NSLayoutConstraint]
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Categories/UIView(MMMPreferredSizeChanges).html b/Categories/UIView(MMMPreferredSizeChanges).html deleted file mode 100644 index c964a75..0000000 --- a/Categories/UIView(MMMPreferredSizeChanges).html +++ /dev/null @@ -1,366 +0,0 @@ - - - - UIView(MMMPreferredSizeChanges) Category Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

UIView(MMMPreferredSizeChanges)

-
-
- -
@interface UIView (MMMPreferredSizeChanges)
-
-/// Signals to one of the interested parent views (supporting `MMMPreferredSizeChanges`)
-/// that the size of this view could have potentially changed and they should measure things again.
-///
-/// This helps with containers that do not primarily rely on Auto Layout, like UITableView.
-- (void)mmm_setPreferredSizeCouldChange;
-
-@end
- -
-
-

Undocumented

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Signals to one of the interested parent views (supporting MMMPreferredSizeChanges) -that the size of this view could have potentially changed and they should measure things again.

    - -

    This helps with containers that do not primarily rely on Auto Layout, like UITableView.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)mmm_setPreferredSizeCouldChange;
    - -
    -
    -

    Swift

    -
    func mmm_setPreferredSizeCouldChange()
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Categories/UIView(MMMTemple).html b/Categories/UIView(MMMTemple).html deleted file mode 100644 index 4d5b41b..0000000 --- a/Categories/UIView(MMMTemple).html +++ /dev/null @@ -1,1343 +0,0 @@ - - - - UIView(MMMTemple) Category Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

UIView(MMMTemple)

-
-
- -
@interface UIView (MMMTemple)
- -
-
-

A few shorthands for UIView.

- -
-
- -
-
-
-
    -
  • -
    - - - - mmm_rect - -
    -
    -
    -
    -
    -
    -

    A wrapper for the center and bounds.size properties similar to ‘frame’, but not taking the current transform into account.

    - -
      -
    • Handy when there is a transform applied to a view already, but we want to set its frame in normal state.
    • -
    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, setter=mmm_setRect:) CGRect mmm_rect;
    - -
    -
    -

    Swift

    -
    var mmm_rect: CGRect { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - mmm_size - -
    -
    -
    -
    -
    -
    -

    A wrapper for the size component of bounds property.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, setter=mmm_setSize:) CGSize mmm_size;
    - -
    -
    -

    Swift

    -
    var mmm_size: CGSize { get set }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A safer version of safeAreaLayoutGuide that attempts to avoid layout loops happening when a view using it

    - -
      -
    • is transformed in certain “inconvenient” way. (Apple Feedback ID: FB7609936.)
    • -
    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) UILayoutGuide *_Nonnull mmm_safeAreaLayoutGuide;
    - -
    -
    -

    Swift

    -
    var mmm_safeAreaLayoutGuide: UILayoutGuide { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - mmm_safeAreaInsets - -
    -
    -
    -
    -
    -
    -

    Effective safeAreaInsets as seen by mmm_safeAreaLayoutGuide.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) UIEdgeInsets mmm_safeAreaInsets;
    - -
    -
    -

    Swift

    -
    var mmm_safeAreaInsets: UIEdgeInsets { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Constraints anchoring the given view within the receiver according to horizontal and vertical alignment flags. -Note that constrains are not added into the reciever automatically. -It is recommended to use this method instead of the mmm_addConstraintsForSubview:* bunch.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull NSArray<NSLayoutConstraint *> *)
    -    mmm_constraintsAligningView:(nonnull UIView *)subview
    -                   horizontally:
    -                       (MMMLayoutHorizontalAlignment)horizontalAlignment
    -                     vertically:(MMMLayoutVerticalAlignment)verticalAlignment
    -                         insets:(UIEdgeInsets)insets;
    - -
    -
    -

    Swift

    -
    func mmm_constraintsAligningView(_ subview: UIView, horizontally horizontalAlignment: MMMLayoutHorizontalAlignment, vertically verticalAlignment: MMMLayoutVerticalAlignment, insets: UIEdgeInsets) -> [NSLayoutConstraint]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Deprecated

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (NSArray<NSLayoutConstraint *> *)mmm_constraintsAligningView:(UIView *)subview
    -	horizontally:(MMMLayoutHorizontalAlignment)horizontalAlignment DEPRECATED_ATTRIBUTE;
    - -
    -
    -

    Swift

    -
    func mmm_constraintsAligningView(_ subview: UIView, horizontally horizontalAlignment: MMMLayoutHorizontalAlignment) -> [NSLayoutConstraint]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Deprecated

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (NSArray<NSLayoutConstraint *> *)mmm_constraintsAligningView:(UIView *)subview
    -	vertically:(MMMLayoutVerticalAlignment)verticalAlignment DEPRECATED_ATTRIBUTE;
    - -
    -
    -

    Swift

    -
    func mmm_constraintsAligningView(_ subview: UIView, vertically verticalAlignment: MMMLayoutVerticalAlignment) -> [NSLayoutConstraint]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (NSArray<NSLayoutConstraint *> *)mmm_constraintsAligningGuide:(UILayoutGuide *)guide
    -	horizontally:(MMMLayoutHorizontalAlignment)horizontalAlignment
    -	vertically:(MMMLayoutVerticalAlignment)verticalAlignment
    -	insets:(UIEdgeInsets)insets NS_SWIFT_NAME(mmm_constraints(aligning:horizontally:vertically:insets:));
    - -
    -
    -

    Swift

    -
    func mmm_constraints(aligning guide: UILayoutGuide, horizontally horizontalAlignment: MMMLayoutHorizontalAlignment, vertically verticalAlignment: MMMLayoutVerticalAlignment, insets: UIEdgeInsets) -> [NSLayoutConstraint]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Adds contraints anchoring the given view within the receiver according to horizontal and vertical alignment flags. -(This is a shortcut for calling mmm_constraintsAligningView:horizontally:vertically:insets: and adding the contraints returned.)

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull NSArray<NSLayoutConstraint *> *)
    -    mmm_addConstraintsAligningView:(nonnull UIView *)subview
    -                      horizontally:
    -                          (MMMLayoutHorizontalAlignment)horizontalAlignment
    -                        vertically:(MMMLayoutVerticalAlignment)verticalAlignment
    -                            insets:(UIEdgeInsets)insets;
    - -
    -
    -

    Swift

    -
    func mmm_addConstraintsAligningView(_ subview: UIView, horizontally horizontalAlignment: MMMLayoutHorizontalAlignment, vertically verticalAlignment: MMMLayoutVerticalAlignment, insets: UIEdgeInsets) -> [NSLayoutConstraint]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (NSArray<NSLayoutConstraint *> *)mmm_addConstraintsAligningView:(UIView *)subview
    -	horizontally:(MMMLayoutHorizontalAlignment)horizontalAlignment
    -	vertically:(MMMLayoutVerticalAlignment)verticalAlignment;
    - -
    -
    -

    Swift

    -
    func mmm_addConstraintsAligningView(_ subview: UIView, horizontally horizontalAlignment: MMMLayoutHorizontalAlignment, vertically verticalAlignment: MMMLayoutVerticalAlignment) -> [NSLayoutConstraint]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Deprecated

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (NSArray<NSLayoutConstraint *> *)mmm_addConstraintsAligningView:(UIView *)subview
    -	horizontally:(MMMLayoutHorizontalAlignment)horizontalAlignment DEPRECATED_ATTRIBUTE;
    - -
    -
    -

    Swift

    -
    func mmm_addConstraintsAligningView(_ subview: UIView, horizontally horizontalAlignment: MMMLayoutHorizontalAlignment) -> [NSLayoutConstraint]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Deprecated

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (NSArray<NSLayoutConstraint *> *)mmm_addConstraintsAligningView:(UIView *)subview
    -	vertically:(MMMLayoutVerticalAlignment)verticalAlignment DEPRECATED_ATTRIBUTE;
    - -
    -
    -

    Swift

    -
    func mmm_addConstraintsAligningView(_ subview: UIView, vertically verticalAlignment: MMMLayoutVerticalAlignment) -> [NSLayoutConstraint]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Not yet activated constraints implementing a common layout idiom used with text:

    - -
      -
    • the given view is centered within the receiver,
    • -
    • certain minimum padding is ensured on the sides,
    • -
    • if maxWidth > 0, then the width of the view is limited to maxWidth, so it does not grow too wide e.g. on iPad.
    • -
    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull NSArray<NSLayoutConstraint *> *)
    -    mmm_constraintsHorizontallyCenteringView:(nonnull UIView *)view
    -                                  minPadding:(CGFloat)minPadding
    -                                    maxWidth:(CGFloat)maxWidth;
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A shortcut activating constraints returned by mmm_constraintsHorizontallyCenteringView:minPadding:maxWidth:.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)mmm_addConstraintsHorizontallyCenteringView:(nonnull UIView *)view
    -                                         minPadding:(CGFloat)minPadding
    -                                           maxWidth:(CGFloat)maxWidth;
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A shortcut activating constraints returned by mmm_constraintsHorizontallyCenteringView:minPadding:maxWidth:

    - -
      -
    • setting maxWidth to zero.
    • -
    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)mmm_addConstraintsHorizontallyCenteringView:(nonnull UIView *)view
    -                                         minPadding:(CGFloat)minPadding;
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

To be deprecated soon -

-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Deprecated

    - -
    -
    -

    Adds constraints anchoring the given subview within the receiver according to horizontal and vertical alignment flags. -The constraints are also returned, so the caller can remove them later, for example.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull NSArray<NSLayoutConstraint *> *)
    -    mmm_addConstraintsForSubview:(nonnull UIView *)subview
    -             horizontalAlignment:
    -                 (UIControlContentHorizontalAlignment)horizontalAlignment
    -               verticalAlignment:
    -                   (UIControlContentVerticalAlignment)verticalAlignment
    -                          insets:(UIEdgeInsets)insets;
    - -
    -
    -

    Swift

    -
    func mmm_addConstraints(forSubview subview: UIView, horizontalAlignment: UIControl.ContentHorizontalAlignment, verticalAlignment: UIControl.ContentVerticalAlignment, insets: UIEdgeInsets) -> [NSLayoutConstraint]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Deprecated

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (NSArray<NSLayoutConstraint *> *)mmm_addConstraintsForSubview:(UIView *)subview
    -	horizontalAlignment:(UIControlContentHorizontalAlignment)horizontalAlignment
    -	verticalAlignment:(UIControlContentVerticalAlignment)verticalAlignment
    -	DEPRECATED_ATTRIBUTE;
    - -
    -
    -

    Swift

    -
    func mmm_addConstraints(forSubview subview: UIView, horizontalAlignment: UIControl.ContentHorizontalAlignment, verticalAlignment: UIControl.ContentVerticalAlignment) -> [NSLayoutConstraint]
    - -
    -
    -
    -
    -
  • -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Adds constraints and two hidden auxiliary views ensuring that the space between the top of the subview and - topAttribute of topItem is in ‘ratio’ proportion to the space between the bottom of the subview - and bottomAttribute of bottomItem.

    - -

    To be clear: - ratio = (top space) / (bottom space)

    - -

    So you need to use 1 when you want the same size, not 0.5, for example.

    - -

    The given priority will be used for the constraints between the heights of the aux views.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)mmm_addVerticalSpaceRatioConstraintsForSubview:(nonnull UIView *)subview
    -                                               topItem:(nonnull id)topItem
    -                                          topAttribute:
    -                                              (NSLayoutAttribute)topAttribute
    -                                            bottomItem:(nonnull id)bottomItem
    -                                       bottomAttribute:
    -                                           (NSLayoutAttribute)bottomAttribute
    -                                                 ratio:(CGFloat)ratio
    -                                              priority:
    -                                                  (UILayoutPriority)priority;
    - -
    -
    -

    Swift

    -
    func mmm_addVerticalSpaceRatioConstraints(forSubview subview: UIView, topItem: Any, topAttribute: NSLayoutConstraint.Attribute, bottomItem: Any, bottomAttribute: NSLayoutConstraint.Attribute, ratio: CGFloat, priority: UILayoutPriority)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)mmm_addVerticalSpaceRatioConstraintsForSubview:(UIView *)subview
    -	topItem:(id)topItem topAttribute:(NSLayoutAttribute)topAttribute
    -	bottomItem:(id)bottomItem bottomAttribute:(NSLayoutAttribute)bottomAttribute
    -	ratio:(CGFloat)ratio;
    - -
    -
    -

    Swift

    -
    func mmm_addVerticalSpaceRatioConstraints(forSubview subview: UIView, topItem: Any, topAttribute: NSLayoutConstraint.Attribute, bottomItem: Any, bottomAttribute: NSLayoutConstraint.Attribute, ratio: CGFloat)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Deprecated

    - -
    -
    -

    Adds constrains and a hidden auxiliary view ensuring that specified item / attribute vertically divides -the subview in the specified ratio. -Unlike the previous function the ratio here is given not as (top space / bottom space), but as -(top space / (top space + bottom space)). Sorry for the confusion, deprecating this one for now.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)mmm_addVerticalSpaceRatioConstraintsForSubview:(nonnull UIView *)subview
    -                                                  item:(nonnull id)item
    -                                             attribute:
    -                                                 (NSLayoutAttribute)attribute
    -                                                 ratio:(CGFloat)ratio;
    - -
    -
    -

    Swift

    -
    func mmm_addVerticalSpaceRatioConstraints(forSubview subview: UIView, item: Any, attribute: NSLayoutConstraint.Attribute, ratio: CGFloat)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Shortcuts for compression resistance and hugging priorities.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)mmm_setVerticalCompressionResistance:(UILayoutPriority)priority;
    - -
    -
    -

    Swift

    -
    func mmm_setVerticalCompressionResistance(_ priority: UILayoutPriority)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)mmm_setHorizontalCompressionResistance:(UILayoutPriority)priority;
    - -
    -
    -

    Swift

    -
    func mmm_setHorizontalCompressionResistance(_ priority: UILayoutPriority)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)mmm_setVerticalHuggingPriority:(UILayoutPriority)priority;
    - -
    -
    -

    Swift

    -
    func mmm_setVerticalHuggingPriority(_ priority: UILayoutPriority)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)mmm_setHorizontalHuggingPriority:(UILayoutPriority)priority;
    - -
    -
    -

    Swift

    -
    func mmm_setHorizontalHuggingPriority(_ priority: UILayoutPriority)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Deprecated

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)mmm_setVerticalCompressionResistance:(UILayoutPriority)compressionResistance hugging:(UILayoutPriority)hugging DEPRECATED_ATTRIBUTE;
    - -
    -
    -

    Swift

    -
    func mmm_setVerticalCompressionResistance(_ compressionResistance: UILayoutPriority, hugging: UILayoutPriority)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Deprecated

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)mmm_setHorizontalCompressionResistance:(UILayoutPriority)compressionResistance hugging:(UILayoutPriority)hugging DEPRECATED_ATTRIBUTE;
    - -
    -
    -

    Swift

    -
    func mmm_setHorizontalCompressionResistance(_ compressionResistance: UILayoutPriority, hugging: UILayoutPriority)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)mmm_setCompressionResistanceHorizontal:(UILayoutPriority)horizontal
    -	vertical:(UILayoutPriority)vertical NS_SWIFT_NAME(mmm_setCompressionResistance(horizontal:vertical:));
    - -
    -
    -

    Swift

    -
    func mmm_setCompressionResistance(horizontal: UILayoutPriority, vertical: UILayoutPriority)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)mmm_setHuggingHorizontal:(UILayoutPriority)horizontal
    -	vertical:(UILayoutPriority)vertical NS_SWIFT_NAME(mmm_setHugging(horizontal:vertical:));
    - -
    -
    -

    Swift

    -
    func mmm_setHugging(horizontal: UILayoutPriority, vertical: UILayoutPriority)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes.html b/Classes.html deleted file mode 100644 index 31db300..0000000 --- a/Classes.html +++ /dev/null @@ -1,1552 +0,0 @@ - - - - Classes Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

Classes

-

The following classes are available globally.

- -
-
- -
-
-
-
    -
  • -
    - - - - MMMScrollViewShadows - -
    -
    -
    -
    -
    -
    -

    A helper for adding top and bottom shadows into any UIScrollView-based class. -You create an instance in your subclass and forward calls from layoutSubviews.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMScrollViewShadows : NSObject
    - -
    -
    -

    Swift

    -
    class MMMScrollViewShadows : NSObject
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Holds configuration for MMMScrollViewShadows that can be set only on initialization time.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMScrollViewShadowsSettings : NSObject
    - -
    -
    -

    Swift

    -
    class MMMScrollViewShadowsSettings : NSObject
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A view that’s used internally to render shadows in MMMAutoLayoutScrollView. -Open for reuse in cases we want to display compatible shadows but differntly controlled. -Note that this does not support Auto Layout, you have to manage its frame.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMScrollViewShadowView : UIView
    - -
    -
    -

    Swift

    -
    class MMMScrollViewShadowView : UIView
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMWebView - -
    -
    -
    -
    -
    -
    -

    Web view supporting top & bottom shadows.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMWebView : WKWebView
    - -
    -
    -

    Swift

    -
    class MMMWebView : WKWebView
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMTableViewCell - -
    -
    -
    -
    -
    -
    -

    A base for table view cells redeclareing the designated initializer into the one we typically use, -so subclasses do not have to.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMTableViewCell : UITableViewCell
    - -
    -
    -

    Swift

    -
    class MMMTableViewCell : UITableViewCell
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMViewWrappingCell - -
    -
    -
    -
    -
    -
    -

    A simple table view cell wrapping the given view.

    - -

    This is handy when you have a view already and just want to show it as one more cell.

    - -

    The view being wrapped should support Auto Layout and inflate its height properly. The cell has its selectionStyle - set to UITableViewCellSelectionStyleNone as these kind of cells typically do not appear selected.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMViewWrappingCell<ViewType> : MMMTableViewCell
    - -
    -
    -

    Swift

    -
    class MMMViewWrappingCell<ViewType> : MMMTableViewCell where ViewType : AnyObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMNavigationHop - -
    -
    -
    -
    -
    -
    -

    Opening a deep link can involve following through one or more steps, for example:

    - -

    1) make sure the main screen is visible and can switch between the pages; - 2) move to the recipes page; - 3) open recipe with ID N; - 4) scroll to ingredients, etc.

    - -

    This is a single step in such a chain.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMNavigationHop : NSObject
    - -
    -
    -

    Swift

    -
    class MMMNavigationHop : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMNavigationPath - -
    -
    -
    -
    -
    -
    -

    A navigation path is just a collection of one or more “hops”.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMNavigationPath : NSObject
    - -
    -
    -

    Swift

    -
    class MMMNavigationPath : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMNavigation - -
    -
    -
    -
    -
    -
    -

    Manages switching between different sections of the app (kind of internal URL router). -It’s like a central hub accepting navigation requests and then passing them to the entities that able to perform them. -(The entities that are able to open requests should register themselves as handlers.)

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMNavigation : NSObject
    - -
    -
    -

    Swift

    -
    class MMMNavigation : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMNavigationRequest - -
    -
    -
    -
    -
    -
    -

    Info about a navigation request that is passed to handlers.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMNavigationRequest : NSObject
    - -
    -
    -

    Swift

    -
    class MMMNavigationRequest : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMStubViewController - -
    -
    -
    -
    -
    -
    -

    This is to be used during development to stub not ready yet parts of the app.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMStubViewController : UIViewController
    - -
    -
    -

    Swift

    -
    class MMMStubViewController : UIViewController
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMImageView - -
    -
    -
    -
    -
    -
    -

    A limited replacement for UIImageView fixing its inability to properly work with images having - non-zero alignmentRectInsets when scaled.

    - -

    Note that this view is already constrained to the aspect ratio of the image’s alignment rect, - so you should not use hard (equal) pins against both width and height or against all edges.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMImageView : UIView
    - -
    -
    -

    Swift

    -
    class MMMImageView : UIView
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A vertical scroll view with a content view and preconfigured constraints, so there is no need in creating - a scroll view / content view sandwitch manually every time.

    - -

    It also supports top and bottom shadows that are displayed only when the content is clipped. - The shadows can be enabled individually and they can sit either flush with the edges of the scroll view - or can be inset according to adjustedContentInset, which can be handy when vertical safeAreaInsets need - to be taken into account. (Note that contentInsetAdjustmentBehavior has to be either None or Always - on this view since “automatic” options can lead to cyclic calculations.) Also note that scroll indicators - are disabled here by default.

    - -

    Begin by adding your controls and constraints into the contentView ensuring that its size can be derived from your - constraints alone. Avoid constraints to the scroll view itself or outside views unless you are prepared to deal - with the consequences.

    - -

    Note that the width of the contentView will be constrainted hard to be equal to the width of the scroll view - and its height will be constrained with prio 251 to be at least as large as the height of the scroll view.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMAutoLayoutScrollView : UIScrollView
    - -
    -
    -

    Swift

    -
    class MMMAutoLayoutScrollView : UIScrollView
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A subview of MMMAutoLayoutScrollView where all the subviews should be added.

    - -
      -
    • (It’s not different from UIView, but making it of its own class helps when browsing view hierarchies.)
    • -
    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMAutoLayoutScrollViewContentView : UIView
    - -
    -
    -

    Swift

    -
    class MMMAutoLayoutScrollViewContentView : UIView
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMStubView - -
    -
    -
    -
    -
    -
    -

    To be used during development as a placeholder for not yet implemented views. -It inherits a vertical scroll view so it’s possible to see that gesture recognizers of the container do not interfere -with a typical scrolling.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMStubView : UIScrollView
    - -
    -
    -

    Swift

    -
    class MMMStubView : UIScrollView
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMNavigationStack - -
    -
    -
    -
    -
    -
    -

    This is to track the navigation state of the app and have the possibility to programmatically return to registered points of - the navigation path. The actual navigation entities of the app (usually view controllers) must cooperate in order to - achieve this.

    - -

    The possibility to go back is needed to properly handle in-app links. We have a basic mechanism for this (MMMNavigation) - which allows to “open” a part of a link and forward the remaining parts to the corresponding handler down the navigation tree. - The handlers thus need to be able to “close” current navigation path before opening something new.

    - -

    Although navigation in the app is better represented by a tree, we assume here that at least the current path in this tree - can be represented as a stack. Each element of the stack can correspond to a modal view controller or alert view, for example, - but it can also correspond to a special state of the app or a screen.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMNavigationStack : NSObject
    - -
    -
    -

    Swift

    -
    class MMMNavigationStack : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMTableView - -
    -
    -
    -
    -
    -
    -

    A table view supporting top and bottom shadows.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMTableView : UITableView <MMMPreferredSizeChanges>
    - -
    -
    -

    Swift

    -
    class MMMTableView : UITableView, MMMPreferredSizeChanges
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMShadowViewSetting - -
    -
    -
    -
    -
    -
    -

    Holds configuration for MMMShadowView.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMShadowViewSetting : NSObject
    - -
    -
    -

    Swift

    -
    class MMMShadowViewSetting : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMShadowView - -
    -
    -
    -
    -
    -
    -

    Helper view for adding custom layer shadows, while taking the the shadow sizes in conserderation for its final frame.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMShadowView : UIView
    - -
    -
    -

    Swift

    -
    class MMMShadowView : UIView
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMContainerView - -
    -
    -
    -
    -
    -
    -

    Auto Layout does not support constraints against groups of items, so this is for the cases a normal UIView is -typically used as a container for such a group. -Unlike UIView we have translatesAutoresizingMaskIntoConstraints set to NO already. -Also MMMContainerView does not intercept touches but subviews still do.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMContainerView : UIView
    - -
    -
    -

    Swift

    -
    class MMMContainerView : UIView
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMLayoutUtils - -
    -
    -
    -
    -
    -
    -

    This is to group a few simple layout helpers.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMLayoutUtils : NSObject
    - -
    -
    -

    Swift

    -
    class MMMLayoutUtils : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMVelocityMeter - -
    -
    -
    -
    -
    -
    -

    A little helper for velocity/acceleration calculations: you feed it values with timestamps and can get the most recent -acceleration/velocity values.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMVelocityMeter : NSObject
    - -
    -
    -

    Swift

    -
    class MMMVelocityMeter : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMAnimation - -
    -
    -
    -
    -
    -
    -

    Minimalistic animation helpers.

    - -

    Terminology:

    - -
      -
    • Normalized time — time value from the [0; 1] range.
    • -
    • Curved time — normalized time transformed using one of the predefined animation curves.
    • -
    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMAnimation : NSObject
    - -
    -
    -

    Swift

    -
    class MMMAnimation : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMAnimator - -
    -
    -
    -
    -
    -
    -

    Minimalistic animator object in the spirit of helpers defined in MMMAnimation.

    - -

    You add animation items, which are basically a set of blocks that will be called every frame on the main run loop and - when it’s done or cancelled.

    - -

    It’s not for every case, it’s for those moments when you know the duration in advance and just need to animate a - simple custom property and don’t want to subclass CALayer or mess with its multithreaded delegates.

    - -

    The animator object does not take care of interpolation of values nor time curves, the normalized time passed into - update blocks can be transformed and values can be interpolated using simple helpers in MMMAnimation.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMAnimator : NSObject
    - -
    -
    -

    Swift

    -
    class MMMAnimator : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMAnimationHandle - -
    -
    -
    -
    -
    -
    -

    Sort of a handle returned by MMMAnimator when a new animation is scheduled. -Keep it around, otherwise the animation will be cancelled.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMAnimationHandle : NSObject
    - -
    -
    -

    Swift

    -
    class MMMAnimationHandle : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMCollectionView - -
    -
    -
    -
    -
    -
    -

    Collection view supporting top & bottom shadows.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMCollectionView : UICollectionView
    - -
    -
    -

    Swift

    -
    class MMMCollectionView : UICollectionView
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMSpacerView - -
    -
    -
    -
    -
    -
    -

    Auto Layout does not support relationships between empty spaces, so we need to use spacer views and set such -constraints between them. This one is a transparent and by default hidden view which can be used as such a spacer. -It has no intrinsic size and low content hugging and compression resistance priorities. -Unlike UIView we have translatesAutoresizingMaskIntoConstraints set to NO already.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMSpacerView : UIView
    - -
    -
    -

    Swift

    -
    class MMMSpacerView : UIView
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMStackContainer - -
    -
    -
    -
    -
    -
    -

    A container which lays out its subviews in certain direction one after another using fixed spacing between them. -It also aligns all the items along the layout line according to the given alignment settings. -Note that you must use setSubviews: method instead of feeding them one by one via addSubview:. -This is kind of a UIStackView that we understand the internals of.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMStackContainer : UIView
    - -
    -
    -

    Swift

    -
    class MMMStackContainer : UIView
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Vertical version of MMMStackContainer.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMVerticalStackContainer : MMMStackContainer
    - -
    -
    -

    Swift

    -
    class MMMVerticalStackContainer : MMMStackContainer
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Horizontal version of MMMStackContainer.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMHorizontalStackContainer : MMMStackContainer
    - -
    -
    -

    Swift

    -
    class MMMHorizontalStackContainer : MMMStackContainer
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMAutoLayoutIsolator - -
    -
    -
    -
    -
    -
    -

    Wraps a view that uses Auto Layout into a manual layout view providing sizeThatFits: for the outside world. -Can be handy with old APIs that do not fully support Auto Layout.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMAutoLayoutIsolator : UIView
    - -
    -
    -

    Swift

    -
    class MMMAutoLayoutIsolator : UIView
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMPaddedView - -
    -
    -
    -
    -
    -
    -

    Wraps a view padding it from all the sides.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMPaddedView : UIView
    - -
    -
    -

    Swift

    -
    class MMMPaddedView : UIView
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A view displaying a gradient from top to bottom. The linearity of the gradient can be controlled. -Can be handy for shadow overlays, etc.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMVerticalGradientView : UIView
    - -
    -
    -

    Swift

    -
    class MMMVerticalGradientView : UIView
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMStylesheet - -
    -
    -
    -
    -
    -
    -

    A base for app-specific stylesheets: commonly used paddings, colors, fonts, etc in a single place.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMStylesheet : NSObject
    - -
    -
    -

    Swift

    -
    class MMMStylesheet : NSObject
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Dimension converter that uses a table of scales.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMStylesheetScaleConverter : NSObject <MMMStylesheetConverter>
    - -
    -
    -

    Swift

    -
    class MMMStylesheetScaleConverter : NSObject, MMMStylesheetConverter
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMAnimation.html b/Classes/MMMAnimation.html deleted file mode 100644 index c982b2c..0000000 --- a/Classes/MMMAnimation.html +++ /dev/null @@ -1,614 +0,0 @@ - - - - MMMAnimation Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMAnimation

-
-
-

Objective-C

-
@interface MMMAnimation : NSObject
- -
-
-

Swift

-
class MMMAnimation : NSObject
- -
-
-

Minimalistic animation helpers.

- -

Terminology:

- -
    -
  • Normalized time — time value from the [0; 1] range.
  • -
  • Curved time — normalized time transformed using one of the predefined animation curves.
  • -
- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Time obtained by curving the given normalized time (from [0; 1] range).

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (CGFloat)curvedTimeForTime:(CGFloat)time curve:(MMMAnimationCurve)curve;
    - -
    -
    -

    Swift

    -
    class func curvedTime(forTime time: CGFloat, curve: MMMAnimationCurve) -> CGFloat
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Inverse function for curvedTimeForTime:curve:, i.e. when we know the value returned by curvedTimeForTime:curve: -and want the time value passed there. -This should be used sparingly (not every frame) as the implementation is no very efficient.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (CGFloat)timeForCurvedTime:(CGFloat)time curve:(MMMAnimationCurve)curve;
    - -
    -
    -

    Swift

    -
    class func time(forCurvedTime time: CGFloat, curve: MMMAnimationCurve) -> CGFloat
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Time obtained by clamping the given time into [startTime; startTime + duration], normalizing to [0; 1] range, -and then curving using a preset curve.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (CGFloat)curvedTimeForTime:(CGFloat)t
    -                   startTime:(CGFloat)startTime
    -                    duration:(CGFloat)duration
    -                       curve:(MMMAnimationCurve)curve;
    - -
    -
    -

    Swift

    -
    class func curvedTime(forTime t: CGFloat, startTime: CGFloat, duration: CGFloat, curve: MMMAnimationCurve) -> CGFloat
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A float between ‘from’ and ‘to’ corresponding to already normalized and curved time.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (CGFloat)interpolateFrom:(CGFloat)from to:(CGFloat)to time:(CGFloat)time;
    - -
    -
    -

    Swift

    -
    class func interpolate(from: CGFloat, to: CGFloat, time: CGFloat) -> CGFloat
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Deprecated

    - -
    -
    -

    This has been renamed. Use the version above.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (CGFloat)interpolateFrom:(CGFloat)from
    -                        to:(CGFloat)to
    -                curvedTime:(CGFloat)time;
    - -
    -
    -

    Swift

    -
    class func interpolate(from: CGFloat, to: CGFloat, curvedTime time: CGFloat) -> CGFloat
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Value between two floats corresponding to the given time and timing curve. -If the time is less then startTime, then ‘from’ is returned. -If the time is greater then startTime + duration, then ‘to’ is returned.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (CGFloat)interpolateFrom:(CGFloat)from
    -                        to:(CGFloat)to
    -                      time:(CGFloat)time
    -                 startTime:(CGFloat)startTime
    -                  duration:(CGFloat)duration
    -                     curve:(MMMAnimationCurve)curve;
    - -
    -
    -

    Swift

    -
    class func interpolate(from: CGFloat, to: CGFloat, time: CGFloat, startTime: CGFloat, duration: CGFloat, curve: MMMAnimationCurve) -> CGFloat
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - +colorFrom:to:time: - -
    -
    -
    -
    -
    -
    -

    A color between ‘from’ and ‘to’ corresponding to already normalized and curved time. -Only RGB colors are supported. -Interpolation is done along a straight line in the RGB space.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (nonnull UIColor *)colorFrom:(nonnull UIColor *)from
    -                            to:(nonnull UIColor *)to
    -                          time:(CGFloat)time;
    - -
    -
    -

    Swift

    -
    class func color(from: UIColor, to: UIColor, time: CGFloat) -> UIColor
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - +pointFrom:to:time: - -
    -
    -
    -
    -
    -
    -

    A point on the line between given points corresponding to already normalized and curved time.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (CGPoint)pointFrom:(CGPoint)from to:(CGPoint)to time:(CGFloat)time;
    - -
    -
    -

    Swift

    -
    class func point(from: CGPoint, to: CGPoint, time: CGFloat) -> CGPoint
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMAnimationHandle.html b/Classes/MMMAnimationHandle.html deleted file mode 100644 index 0a3f81d..0000000 --- a/Classes/MMMAnimationHandle.html +++ /dev/null @@ -1,424 +0,0 @@ - - - - MMMAnimationHandle Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMAnimationHandle

-
-
-

Objective-C

-
@interface MMMAnimationHandle : NSObject
- -
-
-

Swift

-
class MMMAnimationHandle : NSObject
- -
-
-

Sort of a handle returned by MMMAnimator when a new animation is scheduled. -Keep it around, otherwise the animation will be cancelled.

- -
-
- -
-
-
-
    -
  • -
    - - - - inProgress - -
    -
    -
    -
    -
    -
    -

    YES, if the animation has not been finished yet.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) BOOL inProgress;
    - -
    -
    -

    Swift

    -
    var inProgress: Bool { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -cancel - -
    -
    -
    -
    -
    -
    -

    Finishes animation before its designated end time.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)cancel;
    - -
    -
    -

    Swift

    -
    func cancel()
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)init NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMAnimator.html b/Classes/MMMAnimator.html deleted file mode 100644 index a67c258..0000000 --- a/Classes/MMMAnimator.html +++ /dev/null @@ -1,531 +0,0 @@ - - - - MMMAnimator Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMAnimator

-
-
-

Objective-C

-
@interface MMMAnimator : NSObject
- -
-
-

Swift

-
class MMMAnimator : NSObject
- -
-
-

Minimalistic animator object in the spirit of helpers defined in MMMAnimation.

- -

You add animation items, which are basically a set of blocks that will be called every frame on the main run loop and - when it’s done or cancelled.

- -

It’s not for every case, it’s for those moments when you know the duration in advance and just need to animate a - simple custom property and don’t want to subclass CALayer or mess with its multithreaded delegates.

- -

The animator object does not take care of interpolation of values nor time curves, the normalized time passed into - update blocks can be transformed and values can be interpolated using simple helpers in MMMAnimation.

- -
-
- -
-
-
-
    -
  • -
    - - - - +shared - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (instancetype)shared;
    - -
    -
    -

    Swift

    -
    class func shared() -> Self
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Schedules a new animation item.

    - -

    The updateBlock is called on every update cycle within the animation’s duration. It is guaranteed to be called with - zero time even if cancelled before the next run loop cycle. The update block is also guaranteed to be called with - time being 1 unless is cancelled earlier.

    - -

    The doneBlock is called after the animation finishes or is cancelled.

    - -

    The repeatCount parameter can be set to 0 to mean infinite repeat count.

    - -

    In case repeatCount is different from 1, then autoreverse influences the way the time changes when passed to - the updateBlock: if YES, then it’ll grow from 0 to 1 and then from 1 to 0 on the next repeat, changing back to - from 0 to 1 after this, etc; if NO, then it’ll always from from 0 to 1 on every repeat step.

    - -

    The animation will start on the next cycle of the refresh timer and will have the timestamp of this cycle as its - actual start time, so there is no need in explicit transactions: all animation added on the same run loop cycle are - guaranteed to be run in sync.

    - -

    Keep the object returned. The animation stops when the reference to this object is released.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull MMMAnimationHandle *)
    -    addAnimationWithDuration:(CGFloat)duration
    -                 updateBlock:(nonnull MMMAnimatorUpdateBlock)updateBlock
    -                   doneBlock:(nullable MMMAnimatorDoneBlock)doneBlock;
    - -
    -
    -

    Swift

    -
    func addAnimation(duration: CGFloat, update updateBlock: @escaping MMMAnimatorUpdateBlock, completion doneBlock: MMMAnimatorDoneBlock? = nil) -> MMMAnimationHandle
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (MMMAnimationHandle *)addAnimationWithDuration:(CGFloat)duration
    -	repeatCount:(NSInteger)repeatCount
    -	autoreverse:(BOOL)autoreverse
    -	updateBlock:(MMMAnimatorUpdateBlock)updateBlock
    -	doneBlock:(nullable MMMAnimatorDoneBlock)doneBlock
    -	NS_SWIFT_NAME(addAnimation(duration:repeatCount:autoreverse:update:completion:));
    - -
    -
    -

    Swift

    -
    func addAnimation(duration: CGFloat, repeatCount: Int, autoreverse: Bool, update updateBlock: @escaping MMMAnimatorUpdateBlock, completion doneBlock: MMMAnimatorDoneBlock? = nil) -> MMMAnimationHandle
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Despite the +shared method defined above you can still create own instances of this class.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)init;
    - -
    -
    -

    Swift

    -
    init()
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    For unit tests only: will synchronously run all the animations already in the animator and the ones added within - the given block in the specified number of steps, executing the given block after each step. - This is used in view-based tests for those views that run all their animations using MMMAnimator.

    - -

    The idea is that an animated action is triggered in the animationsBlock (e.g. hideAnimated:YES) and then the - stepBlock is called in the very beginning and in exactly numberOfSteps - 1 moments afterwards. The moments will be - selected, so they are spaced equally and the last one is exactly at the end of the longest animation item.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)_testRunInNumberOfSteps:(NSInteger)numberOfSteps
    -                     animations:(nonnull void (^)(void))animationsBlock
    -                    forEachStep:(nonnull void (^)(NSInteger))stepBlock;
    - -
    -
    -

    Swift

    -
    func _testRun(numberOfSteps: Int, animations animationsBlock: () -> Void, stepBlock: (Int) -> Void)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMAutoLayoutIsolator.html b/Classes/MMMAutoLayoutIsolator.html deleted file mode 100644 index 6b59f10..0000000 --- a/Classes/MMMAutoLayoutIsolator.html +++ /dev/null @@ -1,486 +0,0 @@ - - - - MMMAutoLayoutIsolator Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMAutoLayoutIsolator

-
-
-

Objective-C

-
@interface MMMAutoLayoutIsolator : UIView
- -
-
-

Swift

-
class MMMAutoLayoutIsolator : UIView
- -
-
-

Wraps a view that uses Auto Layout into a manual layout view providing sizeThatFits: for the outside world. -Can be handy with old APIs that do not fully support Auto Layout.

- -
-
- -
-
-
-
    -
  • -
    - - - - view - -
    -
    -
    -
    -
    -
    -

    The view being wrapped.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) UIView *_Nonnull view;
    - -
    -
    -

    Swift

    -
    var view: UIView { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithView: - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithView:(UIView *)view NS_DESIGNATED_INITIALIZER;
    - -
    -
    -

    Swift

    -
    init(view: UIView)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)init NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithFrame: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithCoder: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithCoder:(NSCoder *)coder NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMAutoLayoutScrollView.html b/Classes/MMMAutoLayoutScrollView.html deleted file mode 100644 index 2d3d059..0000000 --- a/Classes/MMMAutoLayoutScrollView.html +++ /dev/null @@ -1,506 +0,0 @@ - - - - MMMAutoLayoutScrollView Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMAutoLayoutScrollView

-
-
-

Objective-C

-
@interface MMMAutoLayoutScrollView : UIScrollView
- -
-
-

Swift

-
class MMMAutoLayoutScrollView : UIScrollView
- -
-
-

A vertical scroll view with a content view and preconfigured constraints, so there is no need in creating - a scroll view / content view sandwitch manually every time.

- -

It also supports top and bottom shadows that are displayed only when the content is clipped. - The shadows can be enabled individually and they can sit either flush with the edges of the scroll view - or can be inset according to adjustedContentInset, which can be handy when vertical safeAreaInsets need - to be taken into account. (Note that contentInsetAdjustmentBehavior has to be either None or Always - on this view since “automatic” options can lead to cyclic calculations.) Also note that scroll indicators - are disabled here by default.

- -

Begin by adding your controls and constraints into the contentView ensuring that its size can be derived from your - constraints alone. Avoid constraints to the scroll view itself or outside views unless you are prepared to deal - with the consequences.

- -

Note that the width of the contentView will be constrainted hard to be equal to the width of the scroll view - and its height will be constrained with prio 251 to be at least as large as the height of the scroll view.

- -
-
- -
-
-
-
    -
  • -
    - - - - contentView - -
    -
    -
    -
    -
    -
    -

    This is where your content subviews should be added.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) MMMAutoLayoutScrollViewContentView *_Nonnull contentView;
    - -
    -
    -

    Swift

    -
    var contentView: MMMAutoLayoutScrollViewContentView { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithSettings: - -
    -
    -
    -
    -
    -
    -

    Initializes with the given config.

    -
    -

    Note

    - Note that changing the config after the initialization has no effect on the view. - -
    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)initWithSettings:(nonnull MMMScrollViewShadowsSettings *)settings;
    - -
    -
    -

    Swift

    -
    init(settings: MMMScrollViewShadowsSettings)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Initializes with default settings, a shortcut for initWithSettings:[[MMMScrollViewShadowsSettings alloc] init].

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)init;
    - -
    -
    -

    Swift

    -
    convenience init()
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithCoder: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithFrame: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMCollectionView.html b/Classes/MMMCollectionView.html deleted file mode 100644 index 5291e31..0000000 --- a/Classes/MMMCollectionView.html +++ /dev/null @@ -1,485 +0,0 @@ - - - - MMMCollectionView Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMCollectionView

-
-
-

Objective-C

-
@interface MMMCollectionView : UICollectionView
- -
-
-

Swift

-
class MMMCollectionView : UICollectionView
- -
-
-

Collection view supporting top & bottom shadows.

- -
-
- -
-
-
-
    -
  • -
    - - - - -initWithSettings: - -
    -
    -
    -
    -
    -
    -

    Uses UICollectionViewFlowLayout by default.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull instancetype)initWithSettings:
    -    (nonnull MMMScrollViewShadowsSettings *)settings;
    - -
    -
    -

    Swift

    -
    init(settings: MMMScrollViewShadowsSettings)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (instancetype)initWithFrame:(CGRect)frame collectionViewLayout:(UICollectionViewLayout *)layout NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithCoder: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (instancetype)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithFrame: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (instancetype)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (instancetype)init NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMContainerView.html b/Classes/MMMContainerView.html deleted file mode 100644 index 7587cf6..0000000 --- a/Classes/MMMContainerView.html +++ /dev/null @@ -1,425 +0,0 @@ - - - - MMMContainerView Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMContainerView

-
-
-

Objective-C

-
@interface MMMContainerView : UIView
- -
-
-

Swift

-
class MMMContainerView : UIView
- -
-
-

Auto Layout does not support constraints against groups of items, so this is for the cases a normal UIView is -typically used as a container for such a group. -Unlike UIView we have translatesAutoresizingMaskIntoConstraints set to NO already. -Also MMMContainerView does not intercept touches but subviews still do.

- -
-
- -
-
-
-
    -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)init NS_DESIGNATED_INITIALIZER;
    - -
    -
    -

    Swift

    -
    init()
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithCoder: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithFrame: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMHorizontalStackContainer.html b/Classes/MMMHorizontalStackContainer.html deleted file mode 100644 index 12afa88..0000000 --- a/Classes/MMMHorizontalStackContainer.html +++ /dev/null @@ -1,396 +0,0 @@ - - - - MMMHorizontalStackContainer Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMHorizontalStackContainer

-
-
-

Objective-C

-
@interface MMMHorizontalStackContainer : MMMStackContainer
- -
-
-

Swift

-
class MMMHorizontalStackContainer : MMMStackContainer
- -
-
-

Horizontal version of MMMStackContainer.

- -
-
- -
-
-
- -
-
-
- -
-
- - - diff --git a/Classes/MMMImageView.html b/Classes/MMMImageView.html deleted file mode 100644 index 3d0f668..0000000 --- a/Classes/MMMImageView.html +++ /dev/null @@ -1,586 +0,0 @@ - - - - MMMImageView Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMImageView

-
-
-

Objective-C

-
@interface MMMImageView : UIView
- -
-
-

Swift

-
class MMMImageView : UIView
- -
-
-

A limited replacement for UIImageView fixing its inability to properly work with images having - non-zero alignmentRectInsets when scaled.

- -

Note that this view is already constrained to the aspect ratio of the image’s alignment rect, - so you should not use hard (equal) pins against both width and height or against all edges.

- -
-
- -
-
-
-
    -
  • -
    - - - - image - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, nullable) UIImage *image
    - -
    -
    -

    Swift

    -
    var image: UIImage? { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - highlightedImage - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, nullable) UIImage *highlightedImage
    - -
    -
    -

    Swift

    -
    var highlightedImage: UIImage? { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - highlighted - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, getter=isHighlighted) BOOL highlighted
    - -
    -
    -

    Swift

    -
    var isHighlighted: Bool { get set }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithImage:(nullable UIImage *)image highlightedImage:(nullable UIImage *)highlightedImage NS_DESIGNATED_INITIALIZER;
    - -
    -
    -

    Swift

    -
    init(image: UIImage?, highlightedImage: UIImage?)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Convenience initializer.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)init;
    - -
    -
    -

    Swift

    -
    convenience init()
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithImage: - -
    -
    -
    -
    -
    -
    -

    Convenience initializer.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)initWithImage:(nullable UIImage *)image;
    - -
    -
    -

    Swift

    -
    convenience init(image: UIImage?)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithFrame: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithCoder: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMLayoutUtils.html b/Classes/MMMLayoutUtils.html deleted file mode 100644 index 614d9c1..0000000 --- a/Classes/MMMLayoutUtils.html +++ /dev/null @@ -1,512 +0,0 @@ - - - - MMMLayoutUtils Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMLayoutUtils

-
-
-

Objective-C

-
@interface MMMLayoutUtils : NSObject
- -
-
-

Swift

-
class MMMLayoutUtils : NSObject
- -
-
-

This is to group a few simple layout helpers.

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    A rect with the given size positioned inside of the target rect in such a way that anchor points of both rects align.

    - -

    Anchor points are given relative to the sizes of the corresponding rects, similar to CALayer’s anchorPoint - property. For example, CGPointMake(0.5, 0.5) represents a center of any rect; CGPointMake(1, 0.5) means - the center point of the right vertical edge.

    - -

    Note that the origin of the rect returned is rounded to the nearest pixels (not points!).

    - -

    See rectWithSize:inRect:contentMode: for a shortcut supporting UIViewContentMode.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (CGRect)rectWithSize:(CGSize)size
    -                anchor:(CGPoint)anchor
    -            withinRect:(CGRect)targetRect
    -                anchor:(CGPoint)targetAnchor;
    - -
    -
    -

    Swift

    -
    class func rect(withSize size: CGSize, anchor: CGPoint, withinRect targetRect: CGRect, anchor targetAnchor: CGPoint) -> CGRect
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A shortcut for the above method with anchors being the same for both source and target rect. -(This way the resulting rect will be always inside of the target one, assuming anchors are within [0; 1] range.)

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (CGRect)rectWithSize:(CGSize)size
    -            withinRect:(CGRect)targetRect
    -                anchor:(CGPoint)anchor;
    - -
    -
    -

    Swift

    -
    class func rect(withSize size: CGSize, withinRect targetRect: CGRect, anchor: CGPoint) -> CGRect
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A frame for the sourceRect positioned within the targetRect according to standard UIViewContentMode flags - related to the layout (i.e. all except UIViewContentModeRedraw).

    - -

    Note that the origin of the resulting rectangle is always rounded to the nearest pixel.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (CGRect)rectWithSize:(CGSize)size
    -            withinRect:(CGRect)targetRect
    -           contentMode:(UIViewContentMode)contentMode;
    - -
    -
    -

    Swift

    -
    class func rect(withSize size: CGSize, withinRect targetRect: CGRect, contentMode: UIView.ContentMode) -> CGRect
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A frame of the given size with its center at the specified point (assuming the center is defined by the given anchor - point).

    - -

    Note that the origin of the resulting rectangle is rounded to the nearest pixel boundary.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (CGRect)rectWithSize:(CGSize)size
    -               atPoint:(CGPoint)center
    -                anchor:(CGPoint)anchor;
    - -
    -
    -

    Swift

    -
    class func rect(withSize size: CGSize, atPoint center: CGPoint, anchor: CGPoint) -> CGRect
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - +rectWithSize:center: - -
    -
    -
    -
    -
    -
    -

    Same as rectWithSize:center:anchor: with anchor set to (0.5, 0.5).

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (CGRect)rectWithSize:(CGSize)size center:(CGPoint)center;
    - -
    -
    -

    Swift

    -
    class func rect(withSize size: CGSize, center: CGPoint) -> CGRect
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMNavigation.html b/Classes/MMMNavigation.html deleted file mode 100644 index caa4a55..0000000 --- a/Classes/MMMNavigation.html +++ /dev/null @@ -1,476 +0,0 @@ - - - - MMMNavigation Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMNavigation

-
-
-

Objective-C

-
@interface MMMNavigation : NSObject
- -
-
-

Swift

-
class MMMNavigation : NSObject
- -
-
-

Manages switching between different sections of the app (kind of internal URL router). -It’s like a central hub accepting navigation requests and then passing them to the entities that able to perform them. -(The entities that are able to open requests should register themselves as handlers.)

- -
-
- -
-
-
-
    -
  • -
    - - - - +root - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (instancetype)root;
    - -
    -
    -

    Swift

    -
    class func root() -> Self
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Starts the process of opening of the given path. Calls the completion block when done, the block receives ID of the -corresponding request. Links are opened one by one. Any navigation request received while handling the current one -will be queued.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull MMMNavigationRequestId)
    -    navigateTo:(nonnull MMMNavigationPath *)path
    -    completion:(nonnull MMMNavigationCompletionBlock)completion;
    - -
    -
    -

    Swift

    -
    func navigate(to path: MMMNavigationPath, completion: @escaping MMMNavigationCompletionBlock) -> Any
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Handlers -

-
-
-
    -
  • -
    - - - - -addHandler: - -
    -
    -
    -
    -
    -
    -

    Adds a handler and returns a cookie/ID object that can be later used to remove it.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull MMMNavigationHandlerId)addHandler:
    -    (nonnull id<MMMNavigationHandler>)handler;
    - -
    -
    -

    Swift

    -
    func add(_ handler: MMMNavigationHandler) -> Any
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -removeHandlerWithId: - -
    -
    -
    -
    -
    -
    -

    Removes a handler by its ID assigned by addHandler.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)removeHandlerWithId:(nonnull MMMNavigationHandlerId)handlerId;
    - -
    -
    -

    Swift

    -
    func removeHandler(withId handlerId: Any)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMNavigationHop.html b/Classes/MMMNavigationHop.html deleted file mode 100644 index 890f94e..0000000 --- a/Classes/MMMNavigationHop.html +++ /dev/null @@ -1,494 +0,0 @@ - - - - MMMNavigationHop Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMNavigationHop

-
-
-

Objective-C

-
@interface MMMNavigationHop : NSObject
- -
-
-

Swift

-
class MMMNavigationHop : NSObject
- -
-
-

Opening a deep link can involve following through one or more steps, for example:

- -

1) make sure the main screen is visible and can switch between the pages; - 2) move to the recipes page; - 3) open recipe with ID N; - 4) scroll to ingredients, etc.

- -

This is a single step in such a chain.

- -
-
- -
-
-
-
    -
  • -
    - - - - action - -
    -
    -
    -
    -
    -
    -

    Name/ID of the hop. Supposed to be a flat string, like ‘recipes’, not a path.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) NSString *_Nonnull action;
    - -
    -
    -

    Swift

    -
    var action: String { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - params - -
    -
    -
    -
    -
    -
    -

    Optional parameters for this hop only.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly, nullable) NSDictionary<NSString *, id> *params;
    - -
    -
    -

    Swift

    -
    var params: [String : Any]? { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithAction:(NSString *)action params:(nullable NSDictionary<NSString*, id> *)params NS_DESIGNATED_INITIALIZER;
    - -
    -
    -

    Swift

    -
    init(action: String, params: [String : Any]?)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithAction: - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithAction:(NSString *)action;
    - -
    -
    -

    Swift

    -
    convenience init(action: String)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)init NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMNavigationPath.html b/Classes/MMMNavigationPath.html deleted file mode 100644 index 3b0cdda..0000000 --- a/Classes/MMMNavigationPath.html +++ /dev/null @@ -1,520 +0,0 @@ - - - - MMMNavigationPath Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMNavigationPath

-
-
-

Objective-C

-
@interface MMMNavigationPath : NSObject
- -
-
-

Swift

-
class MMMNavigationPath : NSObject
- -
-
-

A navigation path is just a collection of one or more “hops”.

- -
-
- -
-
-
-
    -
  • -
    - - - - hops - -
    -
    -
    -
    -
    -
    -

    All the “hops” the link consists of.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) NSArray<MMMNavigationHop *> *_Nonnull hops;
    - -
    -
    -

    Swift

    -
    var hops: [MMMNavigationHop] { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -pathWithoutFirstHop - -
    -
    -
    -
    -
    -
    -

    A new path obtained from the current one by removing the first hop.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nullable MMMNavigationPath *)pathWithoutFirstHop;
    - -
    -
    -

    Swift

    -
    func pathWithoutFirstHop() -> MMMNavigationPath?
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -firstHop - -
    -
    -
    -
    -
    -
    -

    The first hop in the path or nil if the path is empty.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nullable MMMNavigationHop *)firstHop;
    - -
    -
    -

    Swift

    -
    func firstHop() -> MMMNavigationHop?
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithHops: - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithHops:(NSArray<MMMNavigationHop *> *)hops NS_DESIGNATED_INITIALIZER;
    - -
    -
    -

    Swift

    -
    init(hops: [MMMNavigationHop])
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithURI: - -
    -
    -
    -
    -
    -
    -

    Convenience initializer. Allows to use URIs like “main/recipes”, to construct hops out of it. -Note that it does not currently support hop parameters.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)initWithURI:(nonnull NSString *)uri;
    - -
    -
    -

    Swift

    -
    convenience init(uri: String)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)init NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMNavigationRequest.html b/Classes/MMMNavigationRequest.html deleted file mode 100644 index 6c743cc..0000000 --- a/Classes/MMMNavigationRequest.html +++ /dev/null @@ -1,459 +0,0 @@ - - - - MMMNavigationRequest Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMNavigationRequest

-
-
-

Objective-C

-
@interface MMMNavigationRequest : NSObject
- -
-
-

Swift

-
class MMMNavigationRequest : NSObject
- -
-
-

Info about a navigation request that is passed to handlers.

- -
-
- -
-
-
-
    -
  • -
    - - - - originalPath - -
    -
    -
    -
    -
    -
    -

    A sequence of hops the request has started with. This is never changed during lifetime of the request.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) MMMNavigationPath *_Nonnull originalPath;
    - -
    -
    -

    Swift

    -
    var originalPath: MMMNavigationPath { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - path - -
    -
    -
    -
    -
    -
    -

    The current sequence of hops to follow. Handlers can adjust this.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) MMMNavigationPath *_Nonnull path;
    - -
    -
    -

    Swift

    -
    var path: MMMNavigationPath { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Called by the handler when all the hops in the path were followed through.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)didFinishSuccessfully:(BOOL)successfully;
    - -
    -
    -

    Swift

    -
    func didFinishSuccessfully(_ successfully: Bool)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Called by the handler to indicate that the sequence of hops (possibly changed) should be continued by another handler. -The handler is supposed to conform to MMMNavigationHandler protocol and this will be checked for in this method. -The parameter here is not described as id to make it more convenient to call this method.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)continueWithPath:(nonnull MMMNavigationPath *)path
    -                 handler:(nonnull id)handler;
    - -
    -
    -

    Swift

    -
    func `continue`(with path: MMMNavigationPath, handler: Any)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMNavigationStack.html b/Classes/MMMNavigationStack.html deleted file mode 100644 index a034f33..0000000 --- a/Classes/MMMNavigationStack.html +++ /dev/null @@ -1,450 +0,0 @@ - - - - MMMNavigationStack Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMNavigationStack

-
-
-

Objective-C

-
@interface MMMNavigationStack : NSObject
- -
-
-

Swift

-
class MMMNavigationStack : NSObject
- -
-
-

This is to track the navigation state of the app and have the possibility to programmatically return to registered points of - the navigation path. The actual navigation entities of the app (usually view controllers) must cooperate in order to - achieve this.

- -

The possibility to go back is needed to properly handle in-app links. We have a basic mechanism for this (MMMNavigation) - which allows to “open” a part of a link and forward the remaining parts to the corresponding handler down the navigation tree. - The handlers thus need to be able to “close” current navigation path before opening something new.

- -

Although navigation in the app is better represented by a tree, we assume here that at least the current path in this tree - can be represented as a stack. Each element of the stack can correspond to a modal view controller or alert view, for example, - but it can also correspond to a special state of the app or a screen.

- -
-
- -
-
-
-
    -
  • -
    - - - - +shared - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (instancetype)shared;
    - -
    -
    -

    Swift

    -
    class func shared() -> Self
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Notifies the stack about a new modal navigation context facing the user now, such as a modal view controller being presented or - any other special state of the UI which would require either the assistance from the user or navigation items’ delegate - in order to return to the previous navigation step.

    - -

    Again, navigation steps are not limited to modal view controllers, there can be any entity responsible for the current - state of the UI which wants to clean it up properly when asked for via the corresponding delegate.

    - -

    The optional controller parameter might be a view controller corresponding to the new navigation item. This can be used by - this controller with popAllAfterController:completion: method in order to cancel/pop all the navigation items added after it.

    - -

    A nil is returned if it’s not possible to push anything now (because the stack is in the middle of a change).

    - -

    For now trying to push something when “popping” is in progress is considered a programmer’s error however and it will crash - in Debug.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nullable id<MMMNavigationStackItem>)
    -    pushItemWithName:(nonnull NSString *)name
    -            delegate:(nonnull id<MMMNavigationStackItemDelegate>)delegate
    -          controller:(nullable id)controller;
    - -
    -
    -

    Swift

    -
    func pushItem(name: String, delegate: MMMNavigationStackItemDelegate, controller: Any?) -> MMMNavigationStackItem?
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (BOOL)popAllAfterController:(id)controller completion:(MMMNavigationStackCompletion)completion;
    - -
    -
    -

    Swift

    -
    func popAll(afterController controller: Any, completion: @escaping MMMNavigationStackCompletion) -> Bool
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMPaddedView.html b/Classes/MMMPaddedView.html deleted file mode 100644 index 21c1134..0000000 --- a/Classes/MMMPaddedView.html +++ /dev/null @@ -1,517 +0,0 @@ - - - - MMMPaddedView Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMPaddedView

-
-
-

Objective-C

-
@interface MMMPaddedView : UIView
- -
-
-

Swift

-
class MMMPaddedView : UIView
- -
-
-

Wraps a view padding it from all the sides.

- -
-
- -
-
-
-
    -
  • -
    - - - - view - -
    -
    -
    -
    -
    -
    -

    The view being wrapped.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) UIView *_Nonnull view;
    - -
    -
    -

    Swift

    -
    var view: UIView { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - insets - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) UIEdgeInsets insets
    - -
    -
    -

    Swift

    -
    var insets: UIEdgeInsets { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithView:insets: - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithView:(UIView *)view insets:(UIEdgeInsets)insets NS_DESIGNATED_INITIALIZER;
    - -
    -
    -

    Swift

    -
    init(view: UIView, insets: UIEdgeInsets)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)init NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithFrame: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithCoder: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithCoder:(NSCoder *)coder NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMScrollViewShadowView.html b/Classes/MMMScrollViewShadowView.html deleted file mode 100644 index 7b7cc8e..0000000 --- a/Classes/MMMScrollViewShadowView.html +++ /dev/null @@ -1,456 +0,0 @@ - - - - MMMScrollViewShadowView Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMScrollViewShadowView

-
-
-

Objective-C

-
@interface MMMScrollViewShadowView : UIView
- -
-
-

Swift

-
class MMMScrollViewShadowView : UIView
- -
-
-

A view that’s used internally to render shadows in MMMAutoLayoutScrollView. -Open for reuse in cases we want to display compatible shadows but differntly controlled. -Note that this does not support Auto Layout, you have to manage its frame.

- -
-
- -
-
-
- -
-
-
- -
-
- - - diff --git a/Classes/MMMScrollViewShadows.html b/Classes/MMMScrollViewShadows.html deleted file mode 100644 index 143f10a..0000000 --- a/Classes/MMMScrollViewShadows.html +++ /dev/null @@ -1,494 +0,0 @@ - - - - MMMScrollViewShadows Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMScrollViewShadows

-
-
-

Objective-C

-
@interface MMMScrollViewShadows : NSObject
- -
-
-

Swift

-
class MMMScrollViewShadows : NSObject
- -
-
-

A helper for adding top and bottom shadows into any UIScrollView-based class. -You create an instance in your subclass and forward calls from layoutSubviews.

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)initWithScrollView:(nonnull UIScrollView *)scrollView
    -	settings:(nonnull MMMScrollViewShadowsSettings *)settings NS_DESIGNATED_INITIALIZER;
    - -
    -
    -

    Swift

    -
    init(scrollView: UIScrollView, settings: MMMScrollViewShadowsSettings)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)init NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -layoutSubviews - -
    -
    -
    -
    -
    -
    -

    Have to be called from layoutSubviews of our scroll view subclass to update the state of the shadows.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)layoutSubviews;
    - -
    -
    -

    Swift

    -
    func layoutSubviews()
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    YES, if additional content view clipping might be needed for the current shadow settings.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (BOOL)mightNeedClippingView;
    - -
    -
    -

    Swift

    -
    func mightNeedClippingView() -> Bool
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Same as layoutSubviews above but also updates clipToBounds property of the given view in case there are visible

    - -
      -
    • shadows that are not flush with the edges of our scroll view, i.e. when top/bottomShadowShouldUseContentInsets
    • -
    • are used with settings and the corresponding insets are not zero now.
    • -
    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)layoutSubviewsWithClippingView:(nullable UIView *)clippingView;
    - -
    -
    -

    Swift

    -
    func layoutSubviews(withClippingView clippingView: UIView?)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMScrollViewShadowsSettings.html b/Classes/MMMScrollViewShadowsSettings.html deleted file mode 100644 index 4d90caa..0000000 --- a/Classes/MMMScrollViewShadowsSettings.html +++ /dev/null @@ -1,666 +0,0 @@ - - - - MMMScrollViewShadowsSettings Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMScrollViewShadowsSettings

-
-
-

Objective-C

-
@interface MMMScrollViewShadowsSettings : NSObject
- -
-
-

Swift

-
class MMMScrollViewShadowsSettings : NSObject
- -
-
-

Holds configuration for MMMScrollViewShadows that can be set only on initialization time.

- -
-
- -
-
-
-
    -
  • -
    - - - - shadowAlpha - -
    -
    -
    -
    -
    -
    -

    The base shadow color is black with this amount of transparency applied to it.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) CGFloat shadowAlpha;
    - -
    -
    -

    Swift

    -
    var shadowAlpha: CGFloat { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - shadowColor - -
    -
    -
    -
    -
    -
    -

    The base shadow color, ensure this is an RGB color. Note that the alpha channel is ignored, use shadowAlpha instead.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) UIColor *_Nonnull shadowColor;
    - -
    -
    -

    Swift

    -
    var shadowColor: UIColor { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - shadowCurvature - -
    -
    -
    -
    -
    -
    -

    The value between 0 and 1 telling how close to an elliptical curve the shadow’s border should be.

    - -
      -
    • when it’s 0, then the shadow is a normal rectangular one.

    • -
    • when it’s 1, then the gradient of the top (bottom) shadow forms an arc crossing the center of a shadow view and -its both corners.

    • -
    - -

    All values in-between adjust the point at which the gradient crosses the sides of the shadow views.

    - -

    (The default value is 0.5.)

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) CGFloat shadowCurvature;
    - -
    -
    -

    Swift

    -
    var shadowCurvature: CGFloat { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - topShadowEnabled - -
    -
    -
    -
    -
    -
    -

    Disabled by default.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) BOOL topShadowEnabled;
    - -
    -
    -

    Swift

    -
    var topShadowEnabled: Bool { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - topShadowHeight - -
    -
    -
    -
    -
    -
    -

    The height of the top shadow view. (5px by default.)

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) CGFloat topShadowHeight;
    - -
    -
    -

    Swift

    -
    var topShadowHeight: CGFloat { get set }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    YES, if the top shadow should be offset from the top edge of the scroll view by the top offset of content insets.

    - -
      -
    • The default value is NO.
    • -
    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) BOOL topShadowShouldUseContentInsets;
    - -
    -
    -

    Swift

    -
    var topShadowShouldUseContentInsets: Bool { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - bottomShadowEnabled - -
    -
    -
    -
    -
    -
    -

    Disabled by default.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) BOOL bottomShadowEnabled;
    - -
    -
    -

    Swift

    -
    var bottomShadowEnabled: Bool { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - bottomShadowHeight - -
    -
    -
    -
    -
    -
    -

    The height of the bottom shadow view. (10px by default.)

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) CGFloat bottomShadowHeight;
    - -
    -
    -

    Swift

    -
    var bottomShadowHeight: CGFloat { get set }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    YES, if the bottom shadow should be offset from the bottom edge of the scroll view by the bottom offset of content insets.

    - -
      -
    • The default value is NO.
    • -
    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) BOOL bottomShadowShouldUseContentInsets;
    - -
    -
    -

    Swift

    -
    var bottomShadowShouldUseContentInsets: Bool { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)init NS_DESIGNATED_INITIALIZER;
    - -
    -
    -

    Swift

    -
    init()
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMShadowView.html b/Classes/MMMShadowView.html deleted file mode 100644 index 63420b7..0000000 --- a/Classes/MMMShadowView.html +++ /dev/null @@ -1,518 +0,0 @@ - - - - MMMShadowView Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMShadowView

-
-
-

Objective-C

-
@interface MMMShadowView : UIView
- -
-
-

Swift

-
class MMMShadowView : UIView
- -
-
-

Helper view for adding custom layer shadows, while taking the the shadow sizes in conserderation for its final frame.

- -
-
- -
-
-
-
    -
  • -
    - - - - contentView - -
    -
    -
    -
    -
    -
    -

    View that can accepts and lay out subviews.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) UIView *_Nonnull contentView;
    - -
    -
    -

    Swift

    -
    var contentView: UIView { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - settings - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, nullable) NSArray<MMMShadowViewSetting *> *settings
    - -
    -
    -

    Swift

    -
    var settings: [MMMShadowViewSetting]? { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)init;
    - -
    -
    -

    Swift

    -
    init()
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithSettings: - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithSettings:(nullable NSArray<MMMShadowViewSetting *> *)settings;
    - -
    -
    -

    Swift

    -
    init(settings: [MMMShadowViewSetting]?)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithFrame: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithCoder: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithCoder:(NSCoder *)coder NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMShadowViewSetting.html b/Classes/MMMShadowViewSetting.html deleted file mode 100644 index c527979..0000000 --- a/Classes/MMMShadowViewSetting.html +++ /dev/null @@ -1,616 +0,0 @@ - - - - MMMShadowViewSetting Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMShadowViewSetting

-
-
-

Objective-C

-
@interface MMMShadowViewSetting : NSObject
- -
-
-

Swift

-
class MMMShadowViewSetting : NSObject
- -
-
-

Holds configuration for MMMShadowView.

- -
-
- -
-
-
-
    -
  • -
    - - - - color - -
    -
    -
    -
    -
    -
    -

    Default is black color.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) UIColor *_Nonnull color;
    - -
    -
    -

    Swift

    -
    var color: UIColor { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - opacity - -
    -
    -
    -
    -
    -
    -

    Default is 0.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) CGFloat opacity;
    - -
    -
    -

    Swift

    -
    var opacity: CGFloat { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - offset - -
    -
    -
    -
    -
    -
    -

    Default is zero.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) CGSize offset;
    - -
    -
    -

    Swift

    -
    var offset: CGSize { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - radius - -
    -
    -
    -
    -
    -
    -

    Default is 0.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) CGFloat radius;
    - -
    -
    -

    Swift

    -
    var radius: CGFloat { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - insets - -
    -
    -
    -
    -
    -
    -

    Default is zero.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) UIEdgeInsets insets;
    - -
    -
    -

    Swift

    -
    var insets: UIEdgeInsets { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - backgroundColor - -
    -
    -
    -
    -
    -
    -

    Default is white color.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) UIColor *_Nonnull backgroundColor;
    - -
    -
    -

    Swift

    -
    var backgroundColor: UIColor { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - cornerRadius - -
    -
    -
    -
    -
    -
    -

    Default is 0.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) CGFloat cornerRadius;
    - -
    -
    -

    Swift

    -
    var cornerRadius: CGFloat { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)init;
    - -
    -
    -

    Swift

    -
    init()
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithBlock: - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithBlock:(MMMShadowViewSettingBlock)block;
    - -
    -
    -

    Swift

    -
    init(block: @escaping MMMShadowViewSettingBlock)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMSpacerView.html b/Classes/MMMSpacerView.html deleted file mode 100644 index f0dc158..0000000 --- a/Classes/MMMSpacerView.html +++ /dev/null @@ -1,425 +0,0 @@ - - - - MMMSpacerView Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMSpacerView

-
-
-

Objective-C

-
@interface MMMSpacerView : UIView
- -
-
-

Swift

-
class MMMSpacerView : UIView
- -
-
-

Auto Layout does not support relationships between empty spaces, so we need to use spacer views and set such -constraints between them. This one is a transparent and by default hidden view which can be used as such a spacer. -It has no intrinsic size and low content hugging and compression resistance priorities. -Unlike UIView we have translatesAutoresizingMaskIntoConstraints set to NO already.

- -
-
- -
-
-
-
    -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)init NS_DESIGNATED_INITIALIZER;
    - -
    -
    -

    Swift

    -
    init()
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithCoder: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithFrame: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMStackContainer.html b/Classes/MMMStackContainer.html deleted file mode 100644 index d89cb18..0000000 --- a/Classes/MMMStackContainer.html +++ /dev/null @@ -1,493 +0,0 @@ - - - - MMMStackContainer Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMStackContainer

-
-
-

Objective-C

-
@interface MMMStackContainer : UIView
- -
-
-

Swift

-
class MMMStackContainer : UIView
- -
-
-

A container which lays out its subviews in certain direction one after another using fixed spacing between them. -It also aligns all the items along the layout line according to the given alignment settings. -Note that you must use setSubviews: method instead of feeding them one by one via addSubview:. -This is kind of a UIStackView that we understand the internals of.

- -
-
- -
-
-
-
    -
  • -
    - - - - -setSubviews: - -
    -
    -
    -
    -
    -
    -

    Sets subviews to be laid out. Previously set subviews will be removed from this container first.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)setSubviews:(nonnull NSArray<UIView *> *)subviews;
    - -
    -
    -

    Swift

    -
    func setSubviews(_ subviews: [UIView])
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Insets define the padding around all the subviews. -Alignment influences horizontal constraints added for the subviews. -Spacing is the fixed distance to set between items.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)initWithDirection:(MMMLayoutDirection)direction
    -                         insets:(UIEdgeInsets)insets
    -                      alignment:(MMMLayoutAlignment)alignment
    -                        spacing:(CGFloat)spacing;
    - -
    -
    -

    Swift

    -
    init(direction: MMMLayoutDirection, insets: UIEdgeInsets, alignment: MMMLayoutAlignment, spacing: CGFloat)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)init NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithFrame: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithCoder: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMStubView.html b/Classes/MMMStubView.html deleted file mode 100644 index 340031a..0000000 --- a/Classes/MMMStubView.html +++ /dev/null @@ -1,455 +0,0 @@ - - - - MMMStubView Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMStubView

-
-
-

Objective-C

-
@interface MMMStubView : UIScrollView
- -
-
-

Swift

-
class MMMStubView : UIScrollView
- -
-
-

To be used during development as a placeholder for not yet implemented views. -It inherits a vertical scroll view so it’s possible to see that gesture recognizers of the container do not interfere -with a typical scrolling.

- -
-
- -
-
-
-
    -
  • -
    - - - - -initWithText:index: - -
    -
    -
    -
    -
    -
    -

    The text is optional, the index influences the background color.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)initWithText:(nullable NSString *)text index:(NSInteger)index;
    - -
    -
    -

    Swift

    -
    init(text: String?, index: Int)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)init NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithCoder: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithFrame: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMStubViewController.html b/Classes/MMMStubViewController.html deleted file mode 100644 index 5e1ce05..0000000 --- a/Classes/MMMStubViewController.html +++ /dev/null @@ -1,453 +0,0 @@ - - - - MMMStubViewController Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMStubViewController

-
-
-

Objective-C

-
@interface MMMStubViewController : UIViewController
- -
-
-

Swift

-
class MMMStubViewController : UIViewController
- -
-
-

This is to be used during development to stub not ready yet parts of the app.

- -
-
- -
-
-
-
    -
  • -
    - - - - -initWithText:index: - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithText:(NSString *)text index:(NSInteger)index NS_DESIGNATED_INITIALIZER;
    - -
    -
    -

    Swift

    -
    init(text: String, index: Int)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)init NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithCoder: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithNibName:(nullable NSString *)nibNameOrNil bundle:(nullable NSBundle *)nibBundleOrNil NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMStylesheet.html b/Classes/MMMStylesheet.html deleted file mode 100644 index 5502b8b..0000000 --- a/Classes/MMMStylesheet.html +++ /dev/null @@ -1,934 +0,0 @@ - - - - MMMStylesheet Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMStylesheet

-
-
-

Objective-C

-
@interface MMMStylesheet : NSObject
- -
-
-

Swift

-
class MMMStylesheet : NSObject
- -
-
-

A base for app-specific stylesheets: commonly used paddings, colors, fonts, etc in a single place.

- -
-
- -
-
-
-
    -
  • -
    - - - - currentSizeClass - -
    -
    -
    -
    -
    -
    -

    The size class of the current device. See the MMSize* string constants below.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) NSString *_Nonnull currentSizeClass;
    - -
    -
    -

    Swift

    -
    var currentSizeClass: String { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Allows to avoid code that picks values (fonts, sizes, etc) by explicitely matching currentSizeClass. -A mapping of size classes to values is passed here instead and a match is returned, falling back either to the value -under MMMSizeRest key, or, if it is not present, to the value under the key that seems the closest to the current -size class.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)valueForCurrentSizeClass:
    -    (nonnull NSDictionary<NSString *, id> *)sizeClassToValue;
    - -
    -
    -

    Swift

    -
    func value(forCurrentSizeClass sizeClassToValue: [String : Any]) -> Any
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A version of valueForCurrentSizeClass: unwrapping the result as a float, which is handy for numeric values.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (CGFloat)floatForCurrentSizeClass:
    -    (nonnull NSDictionary<NSString *, NSNumber *> *)sizeClassToValue;
    - -
    -
    -

    Swift

    -
    func float(forCurrentSizeClass sizeClassToValue: [String : NSNumber]) -> CGFloat
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Deprecated

    -

    Try using widthBasedConverter instead or a custom converter if you relied on 2 dimensions

    - -
    -
    -

    Deprecated. -Similar to floatForCurrentSizeClass: but instead of falling back to the value under MMMSizeRest key -it tries to extrapolate the requested dimension using 1 or 2 values provided for other size classes using -the widthBasedConverter.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (CGFloat)extrapolatedFloatForCurrentSizeClass:
    -    (nonnull NSDictionary<NSString *, NSNumber *> *)sizeClassToValue;
    - -
    -
    -

    Swift

    -
    func extrapolatedFloat(forCurrentSizeClass sizeClassToValue: [String : NSNumber]) -> CGFloat
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Deprecated

    -

    The code using this might be confusing and/or hard to support. If you need to specify values for different size classes, then list them all explicitly in a call to floatForCurrentSizeClass:

    - -
    -
    -

    Deprecated. -Similar to extrapolatedFloatForCurrentSizeClass:, but allows to override values for certain size classes -in the exceptions paramater.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (CGFloat)extrapolatedFloatForCurrentSizeClass:
    -               (nonnull NSDictionary<NSString *, NSNumber *> *)sizeClassToValue
    -                                         except:
    -                                             (nonnull NSDictionary *)exceptions;
    - -
    -
    -

    Swift

    -
    func extrapolatedFloat(forCurrentSizeClass sizeClassToValue: [String : NSNumber], except exceptions: [AnyHashable : Any]) -> CGFloat
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - widthBasedConverter - -
    -
    -
    -
    -
    -
    -

    Converts dimensions given for one size class into dimensions suitable for the current size class -based on the ratio of screen widths associated with the current and source size classes.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) id<MMMStylesheetConverter> _Nonnull widthBasedConverter;
    - -
    -
    -

    Swift

    -
    var widthBasedConverter: MMMStylesheetConverter { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A standard set of paddings. -The actual stylesheet should override all these or at least the normalPadding. -They are defined here so insetsFromRelativeInsets can be defined here as well. -In case only normalPadding is overriden then the rest will be calculated based on it using sqrt(2) as a multiplier, -so every second padding is exactly 2x larger.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) CGFloat extraExtraSmallPadding;
    - -
    -
    -

    Swift

    -
    var extraExtraSmallPadding: CGFloat { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - extraSmallPadding - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) CGFloat extraSmallPadding
    - -
    -
    -

    Swift

    -
    var extraSmallPadding: CGFloat { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - smallPadding - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) CGFloat smallPadding
    - -
    -
    -

    Swift

    -
    var smallPadding: CGFloat { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - normalPadding - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) CGFloat normalPadding
    - -
    -
    -

    Swift

    -
    var normalPadding: CGFloat { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - largePadding - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) CGFloat largePadding
    - -
    -
    -

    Swift

    -
    var largePadding: CGFloat { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - extraLargePadding - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) CGFloat extraLargePadding
    - -
    -
    -

    Swift

    -
    var extraLargePadding: CGFloat { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Actual insets from relative ones.

    - -

    Each offset in relative insets is a fixed number corresponding to the actual paddings defined above:

    - -
      -
    • .125 - extraExtraSmallPadding
    • -
    • .25 — extraSmallPadding
    • -
    • .5 — smallPadding
    • -
    • 1 — normalPadding
    • -
    • 2 — largePadding
    • -
    • 4 — extraLargePadding
    • -
    - -

    Note that the large padding is not necessarily 2x larger than the normal one, etc (by default the extra large is), - but we intentionally use them here like this to allow more compact notation for insets which is easy to remember and - easy to tweak. Compare, for example:

    - -

    \code - UIEdgeInsetsMake([MHStylesheet shared].normalPadding, [MHStylesheet shared].largePadding, [MHStylesheet shared].normalPadding, [MHStylesheet shared].largePadding) - \endcode

    - -

    and the equivalent:

    - -

    \code - [[MHStylesheet shared] insetsFromRelativeInsets:UIEdgeInsetsMake(1, 2, 1, 2)] - \endcode

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (UIEdgeInsets)insetsFromRelativeInsets:(UIEdgeInsets)insets;
    - -
    -
    -

    Swift

    -
    func insets(fromRelativeInsets insets: UIEdgeInsets) -> UIEdgeInsets
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    This is what insetsFromRelativeInsets: is using internally. Might be useful when making similar methods.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (CGFloat)paddingFromRelativePadding:(CGFloat)padding;
    - -
    -
    -

    Swift

    -
    func padding(fromRelativePadding padding: CGFloat) -> CGFloat
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A metrics dictionary that can be used with Auto Layout with keys/values corresponding to all the paddings we support, -e.g. “extraSmallPadding”, etc.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull NSDictionary<NSString *, NSNumber *> *)dictionaryWithPaddings;
    - -
    -
    -

    Swift

    -
    func dictionaryWithPaddings() -> [String : NSNumber]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A dictionary with 4 values under keys “Top”, “Bottom”, “Left”, “Right” -corresponding to the insets obtained from the provided relative ones via insetsFromRelativeInsets:. -(A shortcut composing insetsFromRelativeInsets method with MMMDictinaryFromUIEdgeInsets().)

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull NSDictionary<NSString *, NSNumber *> *)
    -    dictionaryFromRelativeInsets:(UIEdgeInsets)insets
    -                       keyPrefix:(nonnull NSString *)keyPrefix;
    - -
    -
    -

    Swift

    -
    func dictionary(fromRelativeInsets insets: UIEdgeInsets, keyPrefix: String) -> [String : NSNumber]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A dictionary with 4 values obtained from the insets returned by insetsFromRelativeInsets:insets -under the keys “paddingTop”, “paddingBottom”, “paddingLeft”, “paddingRight”, -i.e. it’s a shortcut for dictionaryFromRelativeInsets:insets keyPrefix:@"padding".

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull NSDictionary<NSString *, NSNumber *> *)
    -    paddingDictionaryFromRelativeInsets:(UIEdgeInsets)insets;
    - -
    -
    -

    Swift

    -
    func paddingDictionary(fromRelativeInsets insets: UIEdgeInsets) -> [String : NSNumber]
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMStylesheetScaleConverter.html b/Classes/MMMStylesheetScaleConverter.html deleted file mode 100644 index b5c68a4..0000000 --- a/Classes/MMMStylesheetScaleConverter.html +++ /dev/null @@ -1,436 +0,0 @@ - - - - MMMStylesheetScaleConverter Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMStylesheetScaleConverter

-
-
-

Objective-C

-
@interface MMMStylesheetScaleConverter : NSObject <MMMStylesheetConverter>
- -
-
-

Swift

-
class MMMStylesheetScaleConverter : NSObject, MMMStylesheetConverter
- -
-
-

Dimension converter that uses a table of scales.

- -
-
- -
-
-
-
    -
  • -
    - - - - -initWithScales: - -
    -
    -
    -
    -
    -
    -

    Initializes the converter with an explicit table of scales. -Every value coming to convertFloat:fromSizeClass: will be returned multiplied by scales[sourceSizeClass].

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)initWithScales:
    -    (nonnull NSDictionary<NSString *, NSNumber *> *)scales;
    - -
    -
    -

    Swift

    -
    init(scales: [String : NSNumber])
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Initializes the converter with a target size class and a table of dimensions associated with every size class - (e.g screen width).

    - -

    Every value coming to convertFloat:fromSizeClass: will be returned adjusted proportionally to the ratio of the - dimensions associated with target and source size classes, i.e. it will be multiplied by - scales[targetSizeClass] / scales[sourceSizeClass].

    - -

    So for a table of screen widths the converter will upscale or downscale dimensions between size classes - proprtionally to the ratios of screen width associated with size classes.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)initWithTargetSizeClass:(nonnull NSString *)targetSizeClass
    -                           dimensions:
    -                               (nonnull NSDictionary<NSString *, NSNumber *> *)
    -                                   dimensions;
    - -
    -
    -

    Swift

    -
    convenience init(targetSizeClass: String, dimensions: [String : NSNumber])
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)init NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMTableView.html b/Classes/MMMTableView.html deleted file mode 100644 index 97e659c..0000000 --- a/Classes/MMMTableView.html +++ /dev/null @@ -1,551 +0,0 @@ - - - - MMMTableView Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMTableView

-
-
-

Objective-C

-
@interface MMMTableView : UITableView <MMMPreferredSizeChanges>
- -
-
-

Swift

-
class MMMTableView : UITableView, MMMPreferredSizeChanges
- -
-
-

A table view supporting top and bottom shadows.

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)initWithSettings:(nonnull MMMScrollViewShadowsSettings *)settings
    -                         style:(UITableViewStyle)style;
    - -
    -
    -

    Swift

    -
    init(settings: MMMScrollViewShadowsSettings, style: UITableView.Style)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithSettings: - -
    -
    -
    -
    -
    -
    -

    Note that UITableViewStylePlain is used.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)initWithSettings:(nonnull MMMScrollViewShadowsSettings *)settings;
    - -
    -
    -

    Swift

    -
    init(settings: MMMScrollViewShadowsSettings)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithFrame:style: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (instancetype)initWithFrame:(CGRect)frame style:(UITableViewStyle)style NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithCoder: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (instancetype)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithFrame: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (instancetype)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (instancetype)init NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    When enabled, then reloadData is automatically called whenever any of the cells report potential size -changes via mmm_setPreferredSizeCouldChange. See MMMPreferredSizeChanges for more info.

    - -

    This feature is disabled by default for compatibility with the current code.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) BOOL shouldHandlePotentialCellSizeChanges;
    - -
    -
    -

    Swift

    -
    var shouldHandlePotentialCellSizeChanges: Bool { get set }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMTableViewCell.html b/Classes/MMMTableViewCell.html deleted file mode 100644 index 5dfcdaa..0000000 --- a/Classes/MMMTableViewCell.html +++ /dev/null @@ -1,485 +0,0 @@ - - - - MMMTableViewCell Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMTableViewCell

-
-
-

Objective-C

-
@interface MMMTableViewCell : UITableViewCell
- -
-
-

Swift

-
class MMMTableViewCell : UITableViewCell
- -
-
-

A base for table view cells redeclareing the designated initializer into the one we typically use, -so subclasses do not have to.

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithReuseIdentifier:(NSString *)reuseIdentifier NS_DESIGNATED_INITIALIZER;
    - -
    -
    -

    Swift

    -
    init!(reuseIdentifier: String!)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithCoder: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithFrame: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)init NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMVelocityMeter.html b/Classes/MMMVelocityMeter.html deleted file mode 100644 index 3eb3d24..0000000 --- a/Classes/MMMVelocityMeter.html +++ /dev/null @@ -1,458 +0,0 @@ - - - - MMMVelocityMeter Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMVelocityMeter

-
-
-

Objective-C

-
@interface MMMVelocityMeter : NSObject
- -
-
-

Swift

-
class MMMVelocityMeter : NSObject
- -
-
-

A little helper for velocity/acceleration calculations: you feed it values with timestamps and can get the most recent -acceleration/velocity values.

- -
-
- -
-
-
-
    -
  • -
    - - - - -reset - -
    -
    -
    -
    -
    -
    -

    Resets the state of the meter, all values added before are forgotten.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)reset;
    - -
    -
    -

    Swift

    -
    func reset()
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -addValue:timestamp: - -
    -
    -
    -
    -
    -
    -

    Adds a coordinate and a corresponding timestamp.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)addValue:(CGFloat)value timestamp:(NSTimeInterval)timestamp;
    - -
    -
    -

    Swift

    -
    func addValue(_ value: CGFloat, timestamp: TimeInterval)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -addValue: - -
    -
    -
    -
    -
    -
    -

    Adds a coordinate with the current timstamp.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)addValue:(CGFloat)value;
    - -
    -
    -

    Swift

    -
    func addValue(_ value: CGFloat)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Calculates velocity and acceleration based on recently added values.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)calculateVelocity:(nonnull CGFloat *)velocity
    -             acceleration:(nonnull CGFloat *)acceleration;
    - -
    -
    -

    Swift

    -
    func calculateVelocity(_ velocity: UnsafeMutablePointer<CGFloat>, acceleration: UnsafeMutablePointer<CGFloat>)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMVerticalGradientView.html b/Classes/MMMVerticalGradientView.html deleted file mode 100644 index e00a1b6..0000000 --- a/Classes/MMMVerticalGradientView.html +++ /dev/null @@ -1,486 +0,0 @@ - - - - MMMVerticalGradientView Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMVerticalGradientView

-
-
-

Objective-C

-
@interface MMMVerticalGradientView : UIView
- -
-
-

Swift

-
class MMMVerticalGradientView : UIView
- -
-
-

A view displaying a gradient from top to bottom. The linearity of the gradient can be controlled. -Can be handy for shadow overlays, etc.

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)initWithTopColor:(UIColor *)topColor bottomColor:(UIColor *)bottomColor curve:(MMMAnimationCurve)curve NS_DESIGNATED_INITIALIZER;
    - -
    -
    -

    Swift

    -
    init(topColor: UIColor, bottomColor: UIColor, curve: MMMAnimationCurve)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)initWithTopColor:(UIColor *)topColor bottomColor:(UIColor *)bottomColor;
    - -
    -
    -

    Swift

    -
    convenience init(topColor: UIColor, bottomColor: UIColor)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)init NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithCoder: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithFrame: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMVerticalStackContainer.html b/Classes/MMMVerticalStackContainer.html deleted file mode 100644 index 840ad88..0000000 --- a/Classes/MMMVerticalStackContainer.html +++ /dev/null @@ -1,396 +0,0 @@ - - - - MMMVerticalStackContainer Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMVerticalStackContainer

-
-
-

Objective-C

-
@interface MMMVerticalStackContainer : MMMStackContainer
- -
-
-

Swift

-
class MMMVerticalStackContainer : MMMStackContainer
- -
-
-

Vertical version of MMMStackContainer.

- -
-
- -
-
-
- -
-
-
- -
-
- - - diff --git a/Classes/MMMViewWrappingCell.html b/Classes/MMMViewWrappingCell.html deleted file mode 100644 index 39ef19a..0000000 --- a/Classes/MMMViewWrappingCell.html +++ /dev/null @@ -1,460 +0,0 @@ - - - - MMMViewWrappingCell Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMViewWrappingCell

-
-
-

Objective-C

-
@interface MMMViewWrappingCell<ViewType> : MMMTableViewCell
- -
-
-

Swift

-
class MMMViewWrappingCell<ViewType> : MMMTableViewCell where ViewType : AnyObject
- -
-
-

A simple table view cell wrapping the given view.

- -

This is handy when you have a view already and just want to show it as one more cell.

- -

The view being wrapped should support Auto Layout and inflate its height properly. The cell has its selectionStyle - set to UITableViewCellSelectionStyleNone as these kind of cells typically do not appear selected.

- -
-
- -
-
-
-
    -
  • -
    - - - - wrappedView - -
    -
    -
    -
    -
    -
    -

    The view this cell wraps. It is added into the contentView and is laid out to fully fill it.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) ViewType _Nonnull wrappedView;
    - -
    -
    -

    Swift

    -
    var wrappedView: ViewType { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithView:(ViewType)view reuseIdentifier:(NSString *)reuseIdentifier;
    - -
    -
    -

    Swift

    -
    init(view: ViewType, reuseIdentifier: String)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithView:(ViewType)view reuseIdentifier:(NSString *)reuseIdentifier inset:(UIEdgeInsets)inset;
    - -
    -
    -

    Swift

    -
    init(view: ViewType, reuseIdentifier: String, inset: UIEdgeInsets)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithReuseIdentifier:(NSString *)reuseIdentifier NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/MMMWebView.html b/Classes/MMMWebView.html deleted file mode 100644 index f04de84..0000000 --- a/Classes/MMMWebView.html +++ /dev/null @@ -1,516 +0,0 @@ - - - - MMMWebView Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMWebView

-
-
-

Objective-C

-
@interface MMMWebView : WKWebView
- -
-
-

Swift

-
class MMMWebView : WKWebView
- -
-
-

Web view supporting top & bottom shadows.

- -
-
- -
-
-
-
    -
  • -
    - - - - -initWithSettings: - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (instancetype)initWithSettings:(MMMScrollViewShadowsSettings *)settings;
    - -
    -
    -

    Swift

    -
    convenience init(settings: MMMScrollViewShadowsSettings)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (instancetype)initWithSettings:(MMMScrollViewShadowsSettings *)settings configuration:(WKWebViewConfiguration *)configuration NS_DESIGNATED_INITIALIZER;
    - -
    -
    -

    Swift

    -
    init(settings: MMMScrollViewShadowsSettings, configuration: WKWebViewConfiguration)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithCoder: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (instancetype)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithFrame: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (instancetype)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (instancetype)initWithFrame:(CGRect)frame configuration:(WKWebViewConfiguration *)configuration NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (instancetype)init NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Constants.html b/Constants.html deleted file mode 100644 index 615bd32..0000000 --- a/Constants.html +++ /dev/null @@ -1,540 +0,0 @@ - - - - Constants Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

Constants

-

The following constants are available globally.

- -
-
- -
-
-
-
    -
  • -
    - - - - MMMGolden - -
    -
    -
    -
    -
    -
    -

    Golden ratio constant.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    extern const CGFloat MMMGolden
    - -
    -
    -

    Swift

    -
    class let golden: CGFloat
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMInverseGolden - -
    -
    -
    -
    -
    -
    -

    1 divided by golden ratio.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    extern const CGFloat MMMInverseGolden
    - -
    -
    -

    Swift

    -
    class let inverseGolden: CGFloat
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMSizeClassic - -
    -
    -
    -
    -
    -
    -

    Small screen phones: iPhone 4/4s/5/5s/SE.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    extern NSString *const _Nonnull MMMSizeClassic
    - -
    -
    -

    Swift

    -
    let MMMSizeClassic: String
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMSize6 - -
    -
    -
    -
    -
    -
    -

    Regular phones: iPhone 6/6s/7/8 and X as well.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    extern NSString *const _Nonnull MMMSize6
    - -
    -
    -

    Swift

    -
    let MMMSize6: String
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMSize6Plus - -
    -
    -
    -
    -
    -
    -

    Pluse-sized phones: iPhone 6/7/8 Plus.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    extern NSString *const _Nonnull MMMSize6Plus
    - -
    -
    -

    Swift

    -
    let MMMSize6Plus: String
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMSizePad - -
    -
    -
    -
    -
    -
    -

    iPads: regular and pros.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    extern NSString *const _Nonnull MMMSizePad
    - -
    -
    -

    Swift

    -
    let MMMSizePad: String
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMSizeRest - -
    -
    -
    -
    -
    -
    -

    Not the actual size class, but can be used as a key valueForCurrentSizeClass: and related methods for a fallback value.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    extern NSString *const _Nonnull MMMSizeRest
    - -
    -
    -

    Swift

    -
    let MMMSizeRest: String
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Enums.html b/Enums.html deleted file mode 100644 index 826ef99..0000000 --- a/Enums.html +++ /dev/null @@ -1,565 +0,0 @@ - - - - Enumerations Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

Enumerations

-

The following enumerations are available globally.

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    NS_ENUM(NSInteger, MMMScrollViewShadowAlignment) {
    -	MMMScrollViewShadowAlignmentTop,
    -	MMMScrollViewShadowAlignmentBottom
    -}
    - -
    -
    -

    Swift

    -
    enum MMMScrollViewShadowAlignment : Int, @unchecked Sendable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMAnimationCurve - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    NS_ENUM(NSInteger, MMMAnimationCurve) {
    -
    -	MMMAnimationCurveLinear,
    -	MMMAnimationCurveEaseOut,
    -	MMMAnimationCurveEaseIn,
    -	MMMAnimationCurveEaseInOut,
    -
    -	// "Softer" versions are closer to the linear curve.
    -	MMMAnimationCurveSofterEaseIn,
    -	MMMAnimationCurveSofterEaseOut,
    -	MMMAnimationCurveSofterEaseInOut,
    -	
    -	// Quad animations (e.g. https://easings.net/#easeInQuad)
    -	MMMAnimationCurveEaseInQuad,
    -	MMMAnimationCurveEaseOutQuad,
    -	MMMAnimationCurveEaseInOutQuad,
    -	
    -	// Cubic animations (e.g. https://easings.net/#easeInCubic)
    -	MMMAnimationCurveEaseInCubic,
    -	MMMAnimationCurveEaseOutCubic,
    -	MMMAnimationCurveEaseInOutCubic,
    -	
    -	// Quart animations (e.g. https://easings.net/#easeInQuart)
    -	MMMAnimationCurveEaseInQuart,
    -	MMMAnimationCurveEaseOutQuart,
    -	MMMAnimationCurveEaseInOutQuart,
    -	
    -	// Quint animations (e.g. https://easings.net/#easeInQuint)
    -	MMMAnimationCurveEaseInQuint,
    -	MMMAnimationCurveEaseOutQuint,
    -	MMMAnimationCurveEaseInOutQuint
    -}
    - -
    -
    -

    Swift

    -
    enum MMMAnimationCurve : Int, @unchecked Sendable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMLayoutAlignment - -
    -
    -
    -
    -
    -
    -

    General alignment flags used when it’s not important which direction (vertical or horizontal) the alignment is for.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    enum MMMLayoutAlignment : NSInteger {}
    - -
    -
    -

    Swift

    -
    enum MMMLayoutAlignment : Int, @unchecked Sendable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMLayoutDirection - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    NS_ENUM(NSInteger, MMMLayoutDirection) {
    -	MMMLayoutDirectionHorizontal,
    -	MMMLayoutDirectionVertical
    -}
    - -
    -
    -

    Swift

    -
    enum MMMLayoutDirection : Int, @unchecked Sendable
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    NS_ENUM(NSInteger, MMMLayoutHorizontalAlignment) {
    -	MMMLayoutHorizontalAlignmentNone = MMMLayoutAlignmentNone,
    -	MMMLayoutHorizontalAlignmentLeft = MMMLayoutAlignmentLeading,
    -	MMMLayoutHorizontalAlignmentGolden = MMMLayoutAlignmentGolden,
    -	MMMLayoutHorizontalAlignmentCenter = MMMLayoutAlignmentCenter,
    -	MMMLayoutHorizontalAlignmentRight = MMMLayoutAlignmentTrailing,
    -	MMMLayoutHorizontalAlignmentFill = MMMLayoutAlignmentFill
    -}
    - -
    -
    -

    Swift

    -
    enum MMMLayoutHorizontalAlignment : Int, @unchecked Sendable
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    NS_ENUM(NSInteger, MMMLayoutVerticalAlignment) {
    -	MMMLayoutVerticalAlignmentNone = MMMLayoutAlignmentNone,
    -	MMMLayoutVerticalAlignmentTop = MMMLayoutAlignmentLeading,
    -	MMMLayoutVerticalAlignmentGolden = MMMLayoutAlignmentGolden,
    -	MMMLayoutVerticalAlignmentCenter = MMMLayoutAlignmentCenter,
    -	MMMLayoutVerticalAlignmentBottom = MMMLayoutAlignmentTrailing,
    -	MMMLayoutVerticalAlignmentFill = MMMLayoutAlignmentFill
    -}
    - -
    -
    -

    Swift

    -
    enum MMMLayoutVerticalAlignment : Int, @unchecked Sendable
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Enums/MMMAnimationCurve.html b/Enums/MMMAnimationCurve.html deleted file mode 100644 index f1bdafa..0000000 --- a/Enums/MMMAnimationCurve.html +++ /dev/null @@ -1,967 +0,0 @@ - - - - MMMAnimationCurve Enumeration Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMAnimationCurve

-
-
-

Objective-C

-
NS_ENUM(NSInteger, MMMAnimationCurve) {
-
-	MMMAnimationCurveLinear,
-	MMMAnimationCurveEaseOut,
-	MMMAnimationCurveEaseIn,
-	MMMAnimationCurveEaseInOut,
-
-	// "Softer" versions are closer to the linear curve.
-	MMMAnimationCurveSofterEaseIn,
-	MMMAnimationCurveSofterEaseOut,
-	MMMAnimationCurveSofterEaseInOut,
-	
-	// Quad animations (e.g. https://easings.net/#easeInQuad)
-	MMMAnimationCurveEaseInQuad,
-	MMMAnimationCurveEaseOutQuad,
-	MMMAnimationCurveEaseInOutQuad,
-	
-	// Cubic animations (e.g. https://easings.net/#easeInCubic)
-	MMMAnimationCurveEaseInCubic,
-	MMMAnimationCurveEaseOutCubic,
-	MMMAnimationCurveEaseInOutCubic,
-	
-	// Quart animations (e.g. https://easings.net/#easeInQuart)
-	MMMAnimationCurveEaseInQuart,
-	MMMAnimationCurveEaseOutQuart,
-	MMMAnimationCurveEaseInOutQuart,
-	
-	// Quint animations (e.g. https://easings.net/#easeInQuint)
-	MMMAnimationCurveEaseInQuint,
-	MMMAnimationCurveEaseOutQuint,
-	MMMAnimationCurveEaseInOutQuint
-}
- -
-
-

Swift

-
enum MMMAnimationCurve : Int, @unchecked Sendable
- -
-
-

Undocumented

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveLinear
    - -
    -
    -

    Swift

    -
    case linear = 0
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveEaseOut
    - -
    -
    -

    Swift

    -
    case easeOut = 1
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveEaseIn
    - -
    -
    -

    Swift

    -
    case easeIn = 2
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveEaseInOut
    - -
    -
    -

    Swift

    -
    case easeInOut = 3
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveSofterEaseIn
    - -
    -
    -

    Swift

    -
    case softerEaseIn = 4
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveSofterEaseOut
    - -
    -
    -

    Swift

    -
    case softerEaseOut = 5
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveSofterEaseInOut
    - -
    -
    -

    Swift

    -
    case softerEaseInOut = 6
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveEaseInQuad
    - -
    -
    -

    Swift

    -
    case easeInQuad = 7
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveEaseOutQuad
    - -
    -
    -

    Swift

    -
    case easeOutQuad = 8
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveEaseInOutQuad
    - -
    -
    -

    Swift

    -
    case easeInOutQuad = 9
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveEaseInCubic
    - -
    -
    -

    Swift

    -
    case easeInCubic = 10
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveEaseOutCubic
    - -
    -
    -

    Swift

    -
    case easeOutCubic = 11
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveEaseInOutCubic
    - -
    -
    -

    Swift

    -
    case easeInOutCubic = 12
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveEaseInQuart
    - -
    -
    -

    Swift

    -
    case easeInQuart = 13
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveEaseOutQuart
    - -
    -
    -

    Swift

    -
    case easeOutQuart = 14
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveEaseInOutQuart
    - -
    -
    -

    Swift

    -
    case easeInOutQuart = 15
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveEaseInQuint
    - -
    -
    -

    Swift

    -
    case easeInQuint = 16
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveEaseOutQuint
    - -
    -
    -

    Swift

    -
    case easeOutQuint = 17
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveEaseInOutQuint
    - -
    -
    -

    Swift

    -
    case easeInOutQuint = 18
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Enums/MMMLayoutAlignment.html b/Enums/MMMLayoutAlignment.html deleted file mode 100644 index 68a7fb1..0000000 --- a/Enums/MMMLayoutAlignment.html +++ /dev/null @@ -1,520 +0,0 @@ - - - - MMMLayoutAlignment Enumeration Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMLayoutAlignment

-
-
-

Objective-C

-
enum MMMLayoutAlignment : NSInteger {}
- -
-
-

Swift

-
enum MMMLayoutAlignment : Int, @unchecked Sendable
- -
-
-

General alignment flags used when it’s not important which direction (vertical or horizontal) the alignment is for.

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutAlignmentNone
    - -
    -
    -

    Swift

    -
    case none = 0
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutAlignmentLeading
    - -
    -
    -

    Swift

    -
    case leading = 1
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutAlignmentGolden
    - -
    -
    -

    Swift

    -
    case golden = 2
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutAlignmentCenter
    - -
    -
    -

    Swift

    -
    case center = 3
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutAlignmentTrailing
    - -
    -
    -

    Swift

    -
    case trailing = 4
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutAlignmentFill
    - -
    -
    -

    Swift

    -
    case fill = 5
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Enums/MMMLayoutDirection.html b/Enums/MMMLayoutDirection.html deleted file mode 100644 index 8ef8f78..0000000 --- a/Enums/MMMLayoutDirection.html +++ /dev/null @@ -1,395 +0,0 @@ - - - - MMMLayoutDirection Enumeration Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMLayoutDirection

-
-
-

Objective-C

-
NS_ENUM(NSInteger, MMMLayoutDirection) {
-	MMMLayoutDirectionHorizontal,
-	MMMLayoutDirectionVertical
-}
- -
-
-

Swift

-
enum MMMLayoutDirection : Int, @unchecked Sendable
- -
-
-

Undocumented

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutDirectionHorizontal
    - -
    -
    -

    Swift

    -
    case horizontal = 0
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutDirectionVertical
    - -
    -
    -

    Swift

    -
    case vertical = 1
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Enums/MMMLayoutHorizontalAlignment.html b/Enums/MMMLayoutHorizontalAlignment.html deleted file mode 100644 index bf708f0..0000000 --- a/Enums/MMMLayoutHorizontalAlignment.html +++ /dev/null @@ -1,527 +0,0 @@ - - - - MMMLayoutHorizontalAlignment Enumeration Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMLayoutHorizontalAlignment

-
-
-

Objective-C

-
NS_ENUM(NSInteger, MMMLayoutHorizontalAlignment) {
-	MMMLayoutHorizontalAlignmentNone = MMMLayoutAlignmentNone,
-	MMMLayoutHorizontalAlignmentLeft = MMMLayoutAlignmentLeading,
-	MMMLayoutHorizontalAlignmentGolden = MMMLayoutAlignmentGolden,
-	MMMLayoutHorizontalAlignmentCenter = MMMLayoutAlignmentCenter,
-	MMMLayoutHorizontalAlignmentRight = MMMLayoutAlignmentTrailing,
-	MMMLayoutHorizontalAlignmentFill = MMMLayoutAlignmentFill
-}
- -
-
-

Swift

-
enum MMMLayoutHorizontalAlignment : Int, @unchecked Sendable
- -
-
-

Undocumented

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutHorizontalAlignmentNone = MMMLayoutAlignmentNone
    - -
    -
    -

    Swift

    -
    case none = 0
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutHorizontalAlignmentLeft = MMMLayoutAlignmentLeading
    - -
    -
    -

    Swift

    -
    case left = 1
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutHorizontalAlignmentGolden = MMMLayoutAlignmentGolden
    - -
    -
    -

    Swift

    -
    case golden = 2
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutHorizontalAlignmentCenter = MMMLayoutAlignmentCenter
    - -
    -
    -

    Swift

    -
    case center = 3
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutHorizontalAlignmentRight = MMMLayoutAlignmentTrailing
    - -
    -
    -

    Swift

    -
    case right = 4
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutHorizontalAlignmentFill = MMMLayoutAlignmentFill
    - -
    -
    -

    Swift

    -
    case fill = 5
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Enums/MMMLayoutVerticalAlignment.html b/Enums/MMMLayoutVerticalAlignment.html deleted file mode 100644 index f95b9aa..0000000 --- a/Enums/MMMLayoutVerticalAlignment.html +++ /dev/null @@ -1,527 +0,0 @@ - - - - MMMLayoutVerticalAlignment Enumeration Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMLayoutVerticalAlignment

-
-
-

Objective-C

-
NS_ENUM(NSInteger, MMMLayoutVerticalAlignment) {
-	MMMLayoutVerticalAlignmentNone = MMMLayoutAlignmentNone,
-	MMMLayoutVerticalAlignmentTop = MMMLayoutAlignmentLeading,
-	MMMLayoutVerticalAlignmentGolden = MMMLayoutAlignmentGolden,
-	MMMLayoutVerticalAlignmentCenter = MMMLayoutAlignmentCenter,
-	MMMLayoutVerticalAlignmentBottom = MMMLayoutAlignmentTrailing,
-	MMMLayoutVerticalAlignmentFill = MMMLayoutAlignmentFill
-}
- -
-
-

Swift

-
enum MMMLayoutVerticalAlignment : Int, @unchecked Sendable
- -
-
-

Undocumented

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutVerticalAlignmentNone = MMMLayoutAlignmentNone
    - -
    -
    -

    Swift

    -
    case none = 0
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutVerticalAlignmentTop = MMMLayoutAlignmentLeading
    - -
    -
    -

    Swift

    -
    case top = 1
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutVerticalAlignmentGolden = MMMLayoutAlignmentGolden
    - -
    -
    -

    Swift

    -
    case golden = 2
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutVerticalAlignmentCenter = MMMLayoutAlignmentCenter
    - -
    -
    -

    Swift

    -
    case center = 3
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutVerticalAlignmentBottom = MMMLayoutAlignmentTrailing
    - -
    -
    -

    Swift

    -
    case bottom = 4
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutVerticalAlignmentFill = MMMLayoutAlignmentFill
    - -
    -
    -

    Swift

    -
    case fill = 5
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Enums/MMMScrollViewShadowAlignment.html b/Enums/MMMScrollViewShadowAlignment.html deleted file mode 100644 index 83c0e84..0000000 --- a/Enums/MMMScrollViewShadowAlignment.html +++ /dev/null @@ -1,395 +0,0 @@ - - - - MMMScrollViewShadowAlignment Enumeration Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMScrollViewShadowAlignment

-
-
-

Objective-C

-
NS_ENUM(NSInteger, MMMScrollViewShadowAlignment) {
-	MMMScrollViewShadowAlignmentTop,
-	MMMScrollViewShadowAlignmentBottom
-}
- -
-
-

Swift

-
enum MMMScrollViewShadowAlignment : Int, @unchecked Sendable
- -
-
-

Undocumented

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMScrollViewShadowAlignmentTop
    - -
    -
    -

    Swift

    -
    case top = 0
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMScrollViewShadowAlignmentBottom
    - -
    -
    -

    Swift

    -
    case bottom = 1
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Functions.html b/Functions.html deleted file mode 100644 index cd71d63..0000000 --- a/Functions.html +++ /dev/null @@ -1,527 +0,0 @@ - - - - Functions Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

Functions

-

The following functions are available globally.

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Suppose you need to contrain a view so its center divides its container in certain ratio different from 1:1 - (e.g. golden section):

    - -

    ┌─────────┐ ◆ - │ │ │ - │ │ │ a - │┌───────┐│ │ - ─│┼ ─ ─ ─ ┼│─◆ ratio = a / b - │└───────┘│ │ - │ │ │ - │ │ │ - │ │ │ b - │ │ │ - │ │ │ - │ │ │ - └─────────┘ ◆

    - -

    You cannot put this ratio directly into the multiplier parameter of the corresponding NSLayoutConstraints relating - the centers of the views, because the multiplier would be the ratio between the distance to the center - of the view (h) and the distance to the center of the container (H) instead:

    - -

    ◆ ┌─────────┐ ◆ - │ │ │ │ - │ │ │ │ a = h - H │ │┌───────┐│ │ - │ │├ ─ ─ ─ ┼│─◆ multiplier = h / H - │ │└───────┘│ │ ratio = a / b = h / (2 * H - h) - ◆─│─ ─ ─ ─ ─│ │ - │ │ │ - │ │ │ b = 2 * H - h - │ │ │ - │ │ │ - │ │ │ - └─────────┘ ◆

    - -

    I.e. the multiplier is h / H (assuming the view is the first in the definition of the constraint), - but the ratio we are interested would be h / (2 * H - h) if expressed in the distances to centers.

    - -

    If you have a desired ratio and want to get a multiplier, which when applied, results in the layout dividing - the container in this ratio, then you can use this function as shortcut.

    - -

    Detailed calculations: - ratio = h / (2 * H - h) ==> 2 * H * ratio - h * ratio = h ==> 2 * H * ratio / h - ratio = 1 - ==> 1 + ratio = 2 * H * ratio / h ==> (1 + ratio) / (2 * ratio) = H / h - where H / h is the inverse of our multiplier, so the actual multiplier is (2 * ratio) / (1 + ratio).

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    static inline CGFloat MMMCenterMultiplierForRatio(CGFloat ratio)
    - -
    -
    -

    Swift

    -
    class func centerMultiplier(forRatio ratio: CGFloat) -> CGFloat
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Animation curve opposite to the given one, e.g. EaseIn for EaseOut.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    extern MMMAnimationCurve MMMReverseAnimationCurve(MMMAnimationCurve curve)
    - -
    -
    -

    Swift

    -
    func MMMReverseAnimationCurve(_ curve: MMMAnimationCurve) -> MMMAnimationCurve
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    static inline MMMLayoutAlignment MMMLayoutAlignmentFromHorizontalAlignment(MMMLayoutHorizontalAlignment alignment) {
    -	return (MMMLayoutAlignment)alignment;
    -}
    - -
    -
    -

    Swift

    -
    func MMMLayoutAlignmentFromHorizontalAlignment(_ alignment: MMMLayoutHorizontalAlignment) -> MMMLayoutAlignment
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    static inline MMMLayoutAlignment MMMLayoutAlignmentFromVerticalAlignment(MMMLayoutVerticalAlignment alignment) {
    -	return (MMMLayoutAlignment)alignment;
    -}
    - -
    -
    -

    Swift

    -
    func MMMLayoutAlignmentFromVerticalAlignment(_ alignment: MMMLayoutVerticalAlignment) -> MMMLayoutAlignment
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A dictionary built from UIEdgeInsets suitable for AutoLayout metrics. -The dictionary will have 4 values under the keys named “Top”, “Left”, “Bottom”, “Right”.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    extern NSDictionary<NSString *, NSNumber *>
    -    *_Nonnull MMMDictionaryFromUIEdgeInsets(NSString *_Nonnull prefix,
    -                                            UIEdgeInsets insets)
    - -
    -
    -

    Swift

    -
    func MMMDictionaryFromUIEdgeInsets(_ prefix: String, _ insets: UIEdgeInsets) -> [String : NSNumber]
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Protocols.html b/Protocols.html deleted file mode 100644 index 75ab669..0000000 --- a/Protocols.html +++ /dev/null @@ -1,493 +0,0 @@ - - - - Protocols Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

Protocols

-

The following protocols are available globally.

- -
-
- -
-
-
-
    -
  • -
    - - - - MMMNavigationHandler - -
    -
    -
    -
    -
    -
    -

    Protocol for entities able to fulfill in-app navigation requests.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @protocol MMMNavigationHandler <NSObject>
    - -
    -
    -

    Swift

    -
    protocol MMMNavigationHandler : NSObjectProtocol
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    This is the delegate corresponding to each navigation item in the stack. -Its main purpose is to be able to handle popping of the corresponding navigation item.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @protocol MMMNavigationStackItemDelegate <NSObject>
    - -
    -
    -

    Swift

    -
    protocol MMMNavigationStackItemDelegate : NSObjectProtocol
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A token corresponding to a single node (item) of the current UI navigation path. -Note that a reference to the token must be stored somewhere or the corresponding item will be popped right away.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @protocol MMMNavigationStackItem <NSObject>
    - -
    -
    -

    Swift

    -
    protocol MMMNavigationStackItem : NSObjectProtocol
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A view supporting this will be notified when one of the child views indicates potential changes in its contents -that might influence its size via mmm_setPreferredSizeCouldChange.

    - -

    This is handy with views that do not fully rely on Auto Layout, like UITableView, -where a change in the size of a cell would require it to reload this cell.

    - -

    The implementation is responsible for coalescing notification and avoiding notification loops.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @protocol MMMPreferredSizeChanges <NSObject>
    - -
    -
    -

    Swift

    -
    protocol MMMPreferredSizeChanges : NSObjectProtocol
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Something that converts dimensions given for one size class (e.g. font sizes from the design made for iPhone 6) - into dimensions for another size class (e.g. font size for iPhone 5 that were not explicitely mentioned in the design).

    - -

    Different converters can be used for different kinds of values. For example, it might make sense to scale paddings - proportionally to screen widths, but keep font sizes the same.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @protocol MMMStylesheetConverter <NSObject>
    - -
    -
    -

    Swift

    -
    protocol MMMStylesheetConverter : NSObjectProtocol
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Protocols/MMMNavigationHandler.html b/Protocols/MMMNavigationHandler.html deleted file mode 100644 index bee71ec..0000000 --- a/Protocols/MMMNavigationHandler.html +++ /dev/null @@ -1,362 +0,0 @@ - - - - MMMNavigationHandler Protocol Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMNavigationHandler

-
-
-

Objective-C

-
@protocol MMMNavigationHandler <NSObject>
- -
-
-

Swift

-
protocol MMMNavigationHandler : NSObjectProtocol
- -
-
-

Protocol for entities able to fulfill in-app navigation requests.

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Returns NO, in case the handler is unable to perform the given request. (Another handler will be tried then.) -Returns YES, if the request has been accepted by the handler. -The handler must call -didFinishSuccessfully: when it’s done performing the request.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (BOOL)performNavigationRequest:(nonnull MMMNavigationRequest *)request;
    - -
    -
    -

    Swift

    -
    func perform(_ request: MMMNavigationRequest) -> Bool
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Protocols/MMMNavigationStackItem.html b/Protocols/MMMNavigationStackItem.html deleted file mode 100644 index 97c5173..0000000 --- a/Protocols/MMMNavigationStackItem.html +++ /dev/null @@ -1,433 +0,0 @@ - - - - MMMNavigationStackItem Protocol Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMNavigationStackItem

-
-
-

Objective-C

-
@protocol MMMNavigationStackItem <NSObject>
- -
-
-

Swift

-
protocol MMMNavigationStackItem : NSObjectProtocol
- -
-
-

A token corresponding to a single node (item) of the current UI navigation path. -Note that a reference to the token must be stored somewhere or the corresponding item will be popped right away.

- -
-
- -
-
-
-
    -
  • -
    - - - - -didPop - -
    -
    -
    -
    -
    -
    -

    Should be called by the item’s delegate when the navigation item has been popped as a result of user’s action -and must be called when MMMNavigationStack calling popNavigationStackItem of the corresponding delegate.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)didPop;
    - -
    -
    -

    Swift

    -
    func didPop()
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -didFailToPop - -
    -
    -
    -
    -
    -
    -

    Should be called by the navigation item’s delegate in rare caes when the corresponding item cannot be popped.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)didFailToPop;
    - -
    -
    -

    Swift

    -
    func didFailToPop()
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Pops all the items currently on the stack above this item, so this one becomes the top. This is an asynchronous operation - because it might involving several navigation steps.

    - -

    Returns YES, if the request to pop was accepted for execution; NO otherwise. The latter means programmers error (such as - popping while another pop is in progress) and will terminate the app when assertions are enabled.

    - -

    Note that the completion handler is executed only if the request has been accepted.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (BOOL)popAllAfterThisItemWithCompletion:
    -    (nonnull MMMNavigationStackCompletion)completion;
    - -
    -
    -

    Swift

    -
    func popAllAfterThisItem(completion: @escaping MMMNavigationStackCompletion) -> Bool
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Protocols/MMMNavigationStackItemDelegate.html b/Protocols/MMMNavigationStackItemDelegate.html deleted file mode 100644 index f3cbd5a..0000000 --- a/Protocols/MMMNavigationStackItemDelegate.html +++ /dev/null @@ -1,366 +0,0 @@ - - - - MMMNavigationStackItemDelegate Protocol Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMNavigationStackItemDelegate

-
-
-

Objective-C

-
@protocol MMMNavigationStackItemDelegate <NSObject>
- -
-
-

Swift

-
protocol MMMNavigationStackItemDelegate : NSObjectProtocol
- -
-
-

This is the delegate corresponding to each navigation item in the stack. -Its main purpose is to be able to handle popping of the corresponding navigation item.

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Should perform all the work necessary to pop the corresponding UI navigation item and must call didPop method - on the corresponding item when done.

    - -

    Note that when the delegate is asked to pop, then all the items on top of it in the stack have been popped already, - so the delegate should not ask the stack to do it. In fact asking for it and waiting for completion might freeze the popping - process as pop completion callbacks are called only after all the whole popping process completes.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)popNavigationStackItem:(nonnull id<MMMNavigationStackItem>)item;
    - -
    -
    -

    Swift

    -
    func pop(_ item: MMMNavigationStackItem)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Protocols/MMMPreferredSizeChanges.html b/Protocols/MMMPreferredSizeChanges.html deleted file mode 100644 index 56798ae..0000000 --- a/Protocols/MMMPreferredSizeChanges.html +++ /dev/null @@ -1,366 +0,0 @@ - - - - MMMPreferredSizeChanges Protocol Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMPreferredSizeChanges

-
-
-

Objective-C

-
@protocol MMMPreferredSizeChanges <NSObject>
- -
-
-

Swift

-
protocol MMMPreferredSizeChanges : NSObjectProtocol
- -
-
-

A view supporting this will be notified when one of the child views indicates potential changes in its contents -that might influence its size via mmm_setPreferredSizeCouldChange.

- -

This is handy with views that do not fully rely on Auto Layout, like UITableView, -where a change in the size of a cell would require it to reload this cell.

- -

The implementation is responsible for coalescing notification and avoiding notification loops.

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)mmm_preferredSizeCouldChangeForSubview:(UIView *)subview;
    - -
    -
    -

    Swift

    -
    func mmm_preferredSizeCouldChange(forSubview subview: UIView)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Protocols/MMMStylesheetConverter.html b/Protocols/MMMStylesheetConverter.html deleted file mode 100644 index 6fb9014..0000000 --- a/Protocols/MMMStylesheetConverter.html +++ /dev/null @@ -1,365 +0,0 @@ - - - - MMMStylesheetConverter Protocol Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMStylesheetConverter

-
-
-

Objective-C

-
@protocol MMMStylesheetConverter <NSObject>
- -
-
-

Swift

-
protocol MMMStylesheetConverter : NSObjectProtocol
- -
-
-

Something that converts dimensions given for one size class (e.g. font sizes from the design made for iPhone 6) - into dimensions for another size class (e.g. font size for iPhone 5 that were not explicitely mentioned in the design).

- -

Different converters can be used for different kinds of values. For example, it might make sense to scale paddings - proportionally to screen widths, but keep font sizes the same.

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Converts a dimension know for certain size class according to the rules of the converter.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (CGFloat)convertFloat:(CGFloat)value
    -          fromSizeClass:(nonnull NSString *)sourceSizeClass;
    - -
    -
    -

    Swift

    -
    func convert(_ value: CGFloat, fromSizeClass sourceSizeClass: String) -> CGFloat
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Type Definitions.html b/Type Definitions.html deleted file mode 100644 index be3dc90..0000000 --- a/Type Definitions.html +++ /dev/null @@ -1,545 +0,0 @@ - - - - Type Definitions Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

Type Definitions

-

The following type definitions are available globally.

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    typedef id MMMNavigationRequestId
    - -
    -
    -

    Swift

    -
    typealias MMMNavigationRequestId = AnyObject
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    typedef void (^MMMNavigationCompletionBlock)(MMMNavigationRequestId requestId, BOOL finished)
    - -
    -
    -

    Swift

    -
    typealias MMMNavigationCompletionBlock = (Any, Bool) -> Void
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    typedef id MMMNavigationHandlerId
    - -
    -
    -

    Swift

    -
    typealias MMMNavigationHandlerId = AnyObject
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    typedef void (^MMMNavigationStackCompletion)(BOOL success)
    - -
    -
    -

    Swift

    -
    typealias MMMNavigationStackCompletion = (Bool) -> Void
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    typedef void (^ _Nonnull MMMShadowViewSettingBlock
    - -
    -
    -

    Swift

    -
    typealias MMMShadowViewSettingBlock = (MMMShadowViewSetting) -> Void
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Called on every update cycle of MMMAnimator for the given animation item.

    - -

    The time is always within [0; 1] range here, which will correspond to the the [start; start + duration] interval of - real time clock.

    - -

    Unless the item is cancelled it is guaranteed that the block will be called for 0 and 1 values.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    typedef void (^MMMAnimatorUpdateBlock)(MMMAnimationHandle *_Nonnull, CGFloat)
    - -
    -
    -

    Swift

    -
    typealias MMMAnimatorUpdateBlock = (MMMAnimationHandle, CGFloat) -> Void
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMAnimatorDoneBlock - -
    -
    -
    -
    -
    -
    -

    Called when the animation item has been finished.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    typedef void (^MMMAnimatorDoneBlock)(MMMAnimationHandle *_Nonnull, BOOL)
    - -
    -
    -

    Swift

    -
    typealias MMMAnimatorDoneBlock = (MMMAnimationHandle, Bool) -> Void
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/badge.svg b/badge.svg index 5abf0e8..a5d7e55 100644 --- a/badge.svg +++ b/badge.svg @@ -1,15 +1,15 @@ - + - + - - + + @@ -18,11 +18,11 @@ documentation - - 50% + + 0% - - 50% + + 0% diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Categories.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Categories.html deleted file mode 100644 index a8f38b2..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Categories.html +++ /dev/null @@ -1,541 +0,0 @@ - - - - Categories Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

Categories

-

The following categories are available globally.

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface UIView (MMMPreferredSizeChanges)
    -
    -/// Signals to one of the interested parent views (supporting `MMMPreferredSizeChanges`)
    -/// that the size of this view could have potentially changed and they should measure things again.
    -///
    -/// This helps with containers that do not primarily rely on Auto Layout, like UITableView.
    -- (void)mmm_setPreferredSizeCouldChange;
    -
    -@end
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface UILayoutGuide (MMMTemple)
    -
    -/// Convenience initializer setting the guide's identifier.
    -- (id)initWithIdentifier:(NSString *)identifier;
    -
    -/**
    - * Not yet activated constraints anchoring the given view within the receiver according to horizontal
    - * and vertical alignment flags.
    - */
    -- (NSArray<NSLayoutConstraint *> *)mmm_constraintsAligningView:(UIView *)view
    -	horizontally:(MMMLayoutHorizontalAlignment)horizontalAlignment
    -	vertically:(MMMLayoutVerticalAlignment)verticalAlignment
    -	insets:(UIEdgeInsets)insets NS_SWIFT_NAME(mmm_constraints(aligning:horizontally:vertically:insets:));
    -
    -- (NSArray<NSLayoutConstraint *> *)mmm_constraintsAligningGuide:(UILayoutGuide *)guide
    -	horizontally:(MMMLayoutHorizontalAlignment)horizontalAlignment
    -	vertically:(MMMLayoutVerticalAlignment)verticalAlignment
    -	insets:(UIEdgeInsets)insets NS_SWIFT_NAME(mmm_constraints(aligning:horizontally:vertically:insets:));
    -
    -/**
    - * Not yet activated constraints implementing a common layout idiom used with text:
    - * - the given view is centered within the receiver,
    - * - certain minimum padding is ensured on the sides,
    - * - if `maxWidth > 0`, then the width of the view is limited to `maxWidth`, so it does not grow too wide e.g. on iPad.
    - */
    -- (NSArray<NSLayoutConstraint *> *)mmm_constraintsHorizontallyCenteringView:(UIView *)view
    -	minPadding:(CGFloat)minPadding
    -	maxWidth:(CGFloat)maxWidth NS_SWIFT_NAME(mmm_constraints(horizontallyCentering:minPadding:maxWidth:));
    -
    -@end
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - UIView(MMMTemple) - -
    -
    -
    -
    -
    -
    -

    A few shorthands for UIView.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface UIView (MMMTemple)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface NSLayoutConstraint (MMMTemple)
    -
    -/**
    - * Our wrapper over the corresponding method of NSLayoutConstraint extending the visual layout language a bit to support
    - * `safeAreaLayoutGuide` property introduced in iOS 11 and still be compatible with older versions of iOS.
    - * (See also `mmm_safeAreaLayoutGuide` in our extension of UIView.)
    - *
    - * To use it simply replace a reference to the superview edge "|" with a reference to a safe edge "<|".
    - *
    - * For example, if you have the following pre iOS 9 code:
    - *
    - * \code
    - * [NSLayoutConstraint activateConstraints:[NSLayoutConstraint
    - *     constraintsWithVisualFormat:@"V:[_button]-(normalPadding)-|"
    - *     options:0 metrics:metrics views:views
    - * ]];
    - * \endcode
    - *
    - * And now you want to make sure that the button sits above the safe bottom margin on iPhone X, then do this:
    - *
    - * \code
    - * [NSLayoutConstraint activateConstraints:[NSLayoutConstraint
    - *     mmm_constraintsWithVisualFormat:@"V:[_button]-(normalPadding)-<|"
    - *     options:0 metrics:metrics views:views
    - * ]];
    - * \endcode
    - *
    - * That's it. It'll anchor the button to the bottom of its superview on iOS 9 and 10, but anchor it to the bottom of
    - * its safeAreaLayoutGuide on iOS 11.
    - *
    - * Please note that using "|>" to pin to the top won't exclude the status bar on iOS 9 and 10.
    - */
    -+ (NSArray<NSLayoutConstraint *> *)mmm_constraintsWithVisualFormat:(NSString *)format
    -	options:(NSLayoutFormatOptions)opts
    -	metrics:(nullable NSDictionary<NSString *,id> *)metrics
    -	views:(nullable NSDictionary<NSString *,id> *)views;
    -
    -/** A shortcut for `[NSLayoutConstraint activateConstraints:[NSLayoutConstraint mmm_constraintsWithVisualFormat:...`. */
    -+ (void)mmm_activateConstraintsWithVisualFormat:(NSString *)format
    -	options:(NSLayoutFormatOptions)opts
    -	metrics:(nullable NSDictionary<NSString *,id> *)metrics
    -	views:(nullable NSDictionary<NSString *,id> *)views;
    -
    -/** Missing counterparts for (de)activateConstraints, so constraint activation code looks the same for individual constraints. */
    -+ (void)activateConstraint:(NSLayoutConstraint *)constraint;
    -+ (void)deactivateConstraint:(NSLayoutConstraint *)constraint;
    -
    -/** A missing convenience initializer including priority. */
    -+ (instancetype)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1
    -	relatedBy:(NSLayoutRelation)relation
    -	toItem:(nullable id)view2 attribute:(NSLayoutAttribute)attr2
    -	multiplier:(CGFloat)multiplier constant:(CGFloat)c
    -	priority:(UILayoutPriority)priority;
    -
    -/** A missing convenience initializer allowing to set identifier for this constraint. */
    -+ (instancetype)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1
    -	relatedBy:(NSLayoutRelation)relation
    -	toItem:(nullable id)view2 attribute:(NSLayoutAttribute)attr2
    -	multiplier:(CGFloat)multiplier constant:(CGFloat)c
    -	identifier:(NSString *)identifier;
    -
    -/** A missing convenience initializer allowing to set both priority and identifier for this constraint. */
    -+ (instancetype)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1
    -	relatedBy:(NSLayoutRelation)relation
    -	toItem:(nullable id)view2 attribute:(NSLayoutAttribute)attr2
    -	multiplier:(CGFloat)multiplier constant:(CGFloat)c
    -	priority:(UILayoutPriority)priority
    -	identifier:(NSString *)identifier;
    -
    -/** A missing convenience initializer allowing to tag a bunch of visual constraints with the same identifier. */
    -+ (NSArray<__kindof NSLayoutConstraint *> *)constraintsWithVisualFormat:(NSString *)format
    -	options:(NSLayoutFormatOptions)opts
    -	metrics:(nullable NSDictionary<NSString *,id> *)metrics
    -	views:(nullable NSDictionary<NSString *, id> *)views
    -	identifier:(NSString *)identifier DEPRECATED_ATTRIBUTE;
    -
    -@end
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Categories/NSLayoutConstraint(MMMTemple).html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Categories/NSLayoutConstraint(MMMTemple).html deleted file mode 100644 index d90e786..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Categories/NSLayoutConstraint(MMMTemple).html +++ /dev/null @@ -1,725 +0,0 @@ - - - - NSLayoutConstraint(MMMTemple) Category Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

NSLayoutConstraint(MMMTemple)

-
-
- -
@interface NSLayoutConstraint (MMMTemple)
-
-/**
- * Our wrapper over the corresponding method of NSLayoutConstraint extending the visual layout language a bit to support
- * `safeAreaLayoutGuide` property introduced in iOS 11 and still be compatible with older versions of iOS.
- * (See also `mmm_safeAreaLayoutGuide` in our extension of UIView.)
- *
- * To use it simply replace a reference to the superview edge "|" with a reference to a safe edge "<|".
- *
- * For example, if you have the following pre iOS 9 code:
- *
- * \code
- * [NSLayoutConstraint activateConstraints:[NSLayoutConstraint
- *     constraintsWithVisualFormat:@"V:[_button]-(normalPadding)-|"
- *     options:0 metrics:metrics views:views
- * ]];
- * \endcode
- *
- * And now you want to make sure that the button sits above the safe bottom margin on iPhone X, then do this:
- *
- * \code
- * [NSLayoutConstraint activateConstraints:[NSLayoutConstraint
- *     mmm_constraintsWithVisualFormat:@"V:[_button]-(normalPadding)-<|"
- *     options:0 metrics:metrics views:views
- * ]];
- * \endcode
- *
- * That's it. It'll anchor the button to the bottom of its superview on iOS 9 and 10, but anchor it to the bottom of
- * its safeAreaLayoutGuide on iOS 11.
- *
- * Please note that using "|>" to pin to the top won't exclude the status bar on iOS 9 and 10.
- */
-+ (NSArray<NSLayoutConstraint *> *)mmm_constraintsWithVisualFormat:(NSString *)format
-	options:(NSLayoutFormatOptions)opts
-	metrics:(nullable NSDictionary<NSString *,id> *)metrics
-	views:(nullable NSDictionary<NSString *,id> *)views;
-
-/** A shortcut for `[NSLayoutConstraint activateConstraints:[NSLayoutConstraint mmm_constraintsWithVisualFormat:...`. */
-+ (void)mmm_activateConstraintsWithVisualFormat:(NSString *)format
-	options:(NSLayoutFormatOptions)opts
-	metrics:(nullable NSDictionary<NSString *,id> *)metrics
-	views:(nullable NSDictionary<NSString *,id> *)views;
-
-/** Missing counterparts for (de)activateConstraints, so constraint activation code looks the same for individual constraints. */
-+ (void)activateConstraint:(NSLayoutConstraint *)constraint;
-+ (void)deactivateConstraint:(NSLayoutConstraint *)constraint;
-
-/** A missing convenience initializer including priority. */
-+ (instancetype)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1
-	relatedBy:(NSLayoutRelation)relation
-	toItem:(nullable id)view2 attribute:(NSLayoutAttribute)attr2
-	multiplier:(CGFloat)multiplier constant:(CGFloat)c
-	priority:(UILayoutPriority)priority;
-
-/** A missing convenience initializer allowing to set identifier for this constraint. */
-+ (instancetype)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1
-	relatedBy:(NSLayoutRelation)relation
-	toItem:(nullable id)view2 attribute:(NSLayoutAttribute)attr2
-	multiplier:(CGFloat)multiplier constant:(CGFloat)c
-	identifier:(NSString *)identifier;
-
-/** A missing convenience initializer allowing to set both priority and identifier for this constraint. */
-+ (instancetype)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1
-	relatedBy:(NSLayoutRelation)relation
-	toItem:(nullable id)view2 attribute:(NSLayoutAttribute)attr2
-	multiplier:(CGFloat)multiplier constant:(CGFloat)c
-	priority:(UILayoutPriority)priority
-	identifier:(NSString *)identifier;
-
-/** A missing convenience initializer allowing to tag a bunch of visual constraints with the same identifier. */
-+ (NSArray<__kindof NSLayoutConstraint *> *)constraintsWithVisualFormat:(NSString *)format
-	options:(NSLayoutFormatOptions)opts
-	metrics:(nullable NSDictionary<NSString *,id> *)metrics
-	views:(nullable NSDictionary<NSString *, id> *)views
-	identifier:(NSString *)identifier DEPRECATED_ATTRIBUTE;
-
-@end
- -
-
-

Undocumented

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Our wrapper over the corresponding method of NSLayoutConstraint extending the visual layout language a bit to support - safeAreaLayoutGuide property introduced in iOS 11 and still be compatible with older versions of iOS. - (See also mmm_safeAreaLayoutGuide in our extension of UIView.)

    - -

    To use it simply replace a reference to the superview edge “|” with a reference to a safe edge “<|”.

    - -

    For example, if you have the following pre iOS 9 code:

    - -

    \code - [NSLayoutConstraint activateConstraints:[NSLayoutConstraint - constraintsWithVisualFormat:@“V:[_button]-(normalPadding)-|” - options:0 metrics:metrics views:views - ]]; - \endcode

    - -

    And now you want to make sure that the button sits above the safe bottom margin on iPhone X, then do this:

    - -

    \code - [NSLayoutConstraint activateConstraints:[NSLayoutConstraint - mmm_constraintsWithVisualFormat:@“V:[_button]-(normalPadding)-<|” - options:0 metrics:metrics views:views - ]]; - \endcode

    - -

    That’s it. It’ll anchor the button to the bottom of its superview on iOS 9 and 10, but anchor it to the bottom of - its safeAreaLayoutGuide on iOS 11.

    - -

    Please note that using “|>” to pin to the top won’t exclude the status bar on iOS 9 and 10.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (nonnull NSArray<NSLayoutConstraint *> *)
    -    mmm_constraintsWithVisualFormat:(nonnull NSString *)format
    -                            options:(NSLayoutFormatOptions)opts
    -                            metrics:
    -                                (nullable NSDictionary<NSString *, id> *)metrics
    -                              views:(nullable NSDictionary<NSString *, id> *)
    -                                        views;
    - -
    -
    -

    Swift

    -
    class func mmm_constraints(withVisualFormat format: String, options opts: NSLayoutConstraint.FormatOptions = [], metrics: [String : Any]?, views: [String : Any]?) -> [NSLayoutConstraint]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A shortcut for [NSLayoutConstraint activateConstraints:[NSLayoutConstraint mmm_constraintsWithVisualFormat:....

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (void)
    -    mmm_activateConstraintsWithVisualFormat:(nonnull NSString *)format
    -                                    options:(NSLayoutFormatOptions)opts
    -                                    metrics:(nullable NSDictionary<NSString *,
    -                                                                   id> *)metrics
    -                                      views:(nullable NSDictionary<NSString *,
    -                                                                   id> *)views;
    - -
    -
    -

    Swift

    -
    class func mmm_activateConstraints(withVisualFormat format: String, options opts: NSLayoutConstraint.FormatOptions = [], metrics: [String : Any]?, views: [String : Any]?)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - +activateConstraint: - -
    -
    -
    -
    -
    -
    -

    Missing counterparts for (de)activateConstraints, so constraint activation code looks the same for individual constraints.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (void)activateConstraint:(nonnull NSLayoutConstraint *)constraint;
    - -
    -
    -

    Swift

    -
    class func activate(_ constraint: NSLayoutConstraint)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (void)deactivateConstraint:(NSLayoutConstraint *)constraint;
    - -
    -
    -

    Swift

    -
    class func deactivate(_ constraint: NSLayoutConstraint)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A missing convenience initializer including priority.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (nonnull instancetype)constraintWithItem:(nonnull id)view1
    -                                 attribute:(NSLayoutAttribute)attr1
    -                                 relatedBy:(NSLayoutRelation)relation
    -                                    toItem:(nullable id)view2
    -                                 attribute:(NSLayoutAttribute)attr2
    -                                multiplier:(CGFloat)multiplier
    -                                  constant:(CGFloat)c
    -                                  priority:(UILayoutPriority)priority;
    - -
    -
    -

    Swift

    -
    convenience init(item view1: Any, attribute attr1: NSLayoutConstraint.Attribute, relatedBy relation: NSLayoutConstraint.Relation, toItem view2: Any?, attribute attr2: NSLayoutConstraint.Attribute, multiplier: CGFloat, constant c: CGFloat, priority: UILayoutPriority)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A missing convenience initializer allowing to set identifier for this constraint.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (nonnull instancetype)constraintWithItem:(nonnull id)view1
    -                                 attribute:(NSLayoutAttribute)attr1
    -                                 relatedBy:(NSLayoutRelation)relation
    -                                    toItem:(nullable id)view2
    -                                 attribute:(NSLayoutAttribute)attr2
    -                                multiplier:(CGFloat)multiplier
    -                                  constant:(CGFloat)c
    -                                identifier:(nonnull NSString *)identifier;
    - -
    -
    -

    Swift

    -
    convenience init(item view1: Any, attribute attr1: NSLayoutConstraint.Attribute, relatedBy relation: NSLayoutConstraint.Relation, toItem view2: Any?, attribute attr2: NSLayoutConstraint.Attribute, multiplier: CGFloat, constant c: CGFloat, identifier: String)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A missing convenience initializer allowing to set both priority and identifier for this constraint.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (nonnull instancetype)constraintWithItem:(nonnull id)view1
    -                                 attribute:(NSLayoutAttribute)attr1
    -                                 relatedBy:(NSLayoutRelation)relation
    -                                    toItem:(nullable id)view2
    -                                 attribute:(NSLayoutAttribute)attr2
    -                                multiplier:(CGFloat)multiplier
    -                                  constant:(CGFloat)c
    -                                  priority:(UILayoutPriority)priority
    -                                identifier:(nonnull NSString *)identifier;
    - -
    -
    -

    Swift

    -
    convenience init(item view1: Any, attribute attr1: NSLayoutConstraint.Attribute, relatedBy relation: NSLayoutConstraint.Relation, toItem view2: Any?, attribute attr2: NSLayoutConstraint.Attribute, multiplier: CGFloat, constant c: CGFloat, priority: UILayoutPriority, identifier: String)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Deprecated

    - -
    -
    -

    A missing convenience initializer allowing to tag a bunch of visual constraints with the same identifier.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (nonnull NSArray<__kindof NSLayoutConstraint *> *)
    -    constraintsWithVisualFormat:(nonnull NSString *)format
    -                        options:(NSLayoutFormatOptions)opts
    -                        metrics:(nullable NSDictionary<NSString *, id> *)metrics
    -                          views:(nullable NSDictionary<NSString *, id> *)views
    -                     identifier:(nonnull NSString *)identifier;
    - -
    -
    -

    Swift

    -
    class func constraints(withVisualFormat format: String, options opts: NSLayoutConstraint.FormatOptions = [], metrics: [String : Any]?, views: [String : Any]?, identifier: String) -> [NSLayoutConstraint]
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Categories/UILayoutGuide(MMMTemple).html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Categories/UILayoutGuide(MMMTemple).html deleted file mode 100644 index aacdd26..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Categories/UILayoutGuide(MMMTemple).html +++ /dev/null @@ -1,498 +0,0 @@ - - - - UILayoutGuide(MMMTemple) Category Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

UILayoutGuide(MMMTemple)

-
-
- -
@interface UILayoutGuide (MMMTemple)
-
-/// Convenience initializer setting the guide's identifier.
-- (id)initWithIdentifier:(NSString *)identifier;
-
-/**
- * Not yet activated constraints anchoring the given view within the receiver according to horizontal
- * and vertical alignment flags.
- */
-- (NSArray<NSLayoutConstraint *> *)mmm_constraintsAligningView:(UIView *)view
-	horizontally:(MMMLayoutHorizontalAlignment)horizontalAlignment
-	vertically:(MMMLayoutVerticalAlignment)verticalAlignment
-	insets:(UIEdgeInsets)insets NS_SWIFT_NAME(mmm_constraints(aligning:horizontally:vertically:insets:));
-
-- (NSArray<NSLayoutConstraint *> *)mmm_constraintsAligningGuide:(UILayoutGuide *)guide
-	horizontally:(MMMLayoutHorizontalAlignment)horizontalAlignment
-	vertically:(MMMLayoutVerticalAlignment)verticalAlignment
-	insets:(UIEdgeInsets)insets NS_SWIFT_NAME(mmm_constraints(aligning:horizontally:vertically:insets:));
-
-/**
- * Not yet activated constraints implementing a common layout idiom used with text:
- * - the given view is centered within the receiver,
- * - certain minimum padding is ensured on the sides,
- * - if `maxWidth > 0`, then the width of the view is limited to `maxWidth`, so it does not grow too wide e.g. on iPad.
- */
-- (NSArray<NSLayoutConstraint *> *)mmm_constraintsHorizontallyCenteringView:(UIView *)view
-	minPadding:(CGFloat)minPadding
-	maxWidth:(CGFloat)maxWidth NS_SWIFT_NAME(mmm_constraints(horizontallyCentering:minPadding:maxWidth:));
-
-@end
- -
-
-

Undocumented

- -
-
- -
-
-
-
    -
  • -
    - - - - -initWithIdentifier: - -
    -
    -
    -
    -
    -
    -

    Convenience initializer setting the guide’s identifier.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)initWithIdentifier:(nonnull NSString *)identifier;
    - -
    -
    -

    Swift

    -
    init(identifier: String)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Not yet activated constraints anchoring the given view within the receiver according to horizontal -and vertical alignment flags.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull NSArray<NSLayoutConstraint *> *)
    -    mmm_constraintsAligningView:(nonnull UIView *)view
    -                   horizontally:
    -                       (MMMLayoutHorizontalAlignment)horizontalAlignment
    -                     vertically:(MMMLayoutVerticalAlignment)verticalAlignment
    -                         insets:(UIEdgeInsets)insets;
    - -
    -
    -

    Swift

    -
    func mmm_constraints(aligning view: UIView, horizontally horizontalAlignment: MMMLayoutHorizontalAlignment, vertically verticalAlignment: MMMLayoutVerticalAlignment, insets: UIEdgeInsets) -> [NSLayoutConstraint]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (NSArray<NSLayoutConstraint *> *)mmm_constraintsAligningGuide:(UILayoutGuide *)guide
    -	horizontally:(MMMLayoutHorizontalAlignment)horizontalAlignment
    -	vertically:(MMMLayoutVerticalAlignment)verticalAlignment
    -	insets:(UIEdgeInsets)insets NS_SWIFT_NAME(mmm_constraints(aligning:horizontally:vertically:insets:));
    - -
    -
    -

    Swift

    -
    func mmm_constraints(aligning guide: UILayoutGuide, horizontally horizontalAlignment: MMMLayoutHorizontalAlignment, vertically verticalAlignment: MMMLayoutVerticalAlignment, insets: UIEdgeInsets) -> [NSLayoutConstraint]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Not yet activated constraints implementing a common layout idiom used with text:

    - -
      -
    • the given view is centered within the receiver,
    • -
    • certain minimum padding is ensured on the sides,
    • -
    • if maxWidth > 0, then the width of the view is limited to maxWidth, so it does not grow too wide e.g. on iPad.
    • -
    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull NSArray<NSLayoutConstraint *> *)
    -    mmm_constraintsHorizontallyCenteringView:(nonnull UIView *)view
    -                                  minPadding:(CGFloat)minPadding
    -                                    maxWidth:(CGFloat)maxWidth;
    - -
    -
    -

    Swift

    -
    func mmm_constraints(horizontallyCentering view: UIView, minPadding: CGFloat, maxWidth: CGFloat) -> [NSLayoutConstraint]
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Categories/UIView(MMMPreferredSizeChanges).html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Categories/UIView(MMMPreferredSizeChanges).html deleted file mode 100644 index c964a75..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Categories/UIView(MMMPreferredSizeChanges).html +++ /dev/null @@ -1,366 +0,0 @@ - - - - UIView(MMMPreferredSizeChanges) Category Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

UIView(MMMPreferredSizeChanges)

-
-
- -
@interface UIView (MMMPreferredSizeChanges)
-
-/// Signals to one of the interested parent views (supporting `MMMPreferredSizeChanges`)
-/// that the size of this view could have potentially changed and they should measure things again.
-///
-/// This helps with containers that do not primarily rely on Auto Layout, like UITableView.
-- (void)mmm_setPreferredSizeCouldChange;
-
-@end
- -
-
-

Undocumented

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Signals to one of the interested parent views (supporting MMMPreferredSizeChanges) -that the size of this view could have potentially changed and they should measure things again.

    - -

    This helps with containers that do not primarily rely on Auto Layout, like UITableView.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)mmm_setPreferredSizeCouldChange;
    - -
    -
    -

    Swift

    -
    func mmm_setPreferredSizeCouldChange()
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Categories/UIView(MMMTemple).html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Categories/UIView(MMMTemple).html deleted file mode 100644 index 4d5b41b..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Categories/UIView(MMMTemple).html +++ /dev/null @@ -1,1343 +0,0 @@ - - - - UIView(MMMTemple) Category Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

UIView(MMMTemple)

-
-
- -
@interface UIView (MMMTemple)
- -
-
-

A few shorthands for UIView.

- -
-
- -
-
-
-
    -
  • -
    - - - - mmm_rect - -
    -
    -
    -
    -
    -
    -

    A wrapper for the center and bounds.size properties similar to ‘frame’, but not taking the current transform into account.

    - -
      -
    • Handy when there is a transform applied to a view already, but we want to set its frame in normal state.
    • -
    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, setter=mmm_setRect:) CGRect mmm_rect;
    - -
    -
    -

    Swift

    -
    var mmm_rect: CGRect { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - mmm_size - -
    -
    -
    -
    -
    -
    -

    A wrapper for the size component of bounds property.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, setter=mmm_setSize:) CGSize mmm_size;
    - -
    -
    -

    Swift

    -
    var mmm_size: CGSize { get set }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A safer version of safeAreaLayoutGuide that attempts to avoid layout loops happening when a view using it

    - -
      -
    • is transformed in certain “inconvenient” way. (Apple Feedback ID: FB7609936.)
    • -
    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) UILayoutGuide *_Nonnull mmm_safeAreaLayoutGuide;
    - -
    -
    -

    Swift

    -
    var mmm_safeAreaLayoutGuide: UILayoutGuide { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - mmm_safeAreaInsets - -
    -
    -
    -
    -
    -
    -

    Effective safeAreaInsets as seen by mmm_safeAreaLayoutGuide.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) UIEdgeInsets mmm_safeAreaInsets;
    - -
    -
    -

    Swift

    -
    var mmm_safeAreaInsets: UIEdgeInsets { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Constraints anchoring the given view within the receiver according to horizontal and vertical alignment flags. -Note that constrains are not added into the reciever automatically. -It is recommended to use this method instead of the mmm_addConstraintsForSubview:* bunch.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull NSArray<NSLayoutConstraint *> *)
    -    mmm_constraintsAligningView:(nonnull UIView *)subview
    -                   horizontally:
    -                       (MMMLayoutHorizontalAlignment)horizontalAlignment
    -                     vertically:(MMMLayoutVerticalAlignment)verticalAlignment
    -                         insets:(UIEdgeInsets)insets;
    - -
    -
    -

    Swift

    -
    func mmm_constraintsAligningView(_ subview: UIView, horizontally horizontalAlignment: MMMLayoutHorizontalAlignment, vertically verticalAlignment: MMMLayoutVerticalAlignment, insets: UIEdgeInsets) -> [NSLayoutConstraint]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Deprecated

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (NSArray<NSLayoutConstraint *> *)mmm_constraintsAligningView:(UIView *)subview
    -	horizontally:(MMMLayoutHorizontalAlignment)horizontalAlignment DEPRECATED_ATTRIBUTE;
    - -
    -
    -

    Swift

    -
    func mmm_constraintsAligningView(_ subview: UIView, horizontally horizontalAlignment: MMMLayoutHorizontalAlignment) -> [NSLayoutConstraint]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Deprecated

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (NSArray<NSLayoutConstraint *> *)mmm_constraintsAligningView:(UIView *)subview
    -	vertically:(MMMLayoutVerticalAlignment)verticalAlignment DEPRECATED_ATTRIBUTE;
    - -
    -
    -

    Swift

    -
    func mmm_constraintsAligningView(_ subview: UIView, vertically verticalAlignment: MMMLayoutVerticalAlignment) -> [NSLayoutConstraint]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (NSArray<NSLayoutConstraint *> *)mmm_constraintsAligningGuide:(UILayoutGuide *)guide
    -	horizontally:(MMMLayoutHorizontalAlignment)horizontalAlignment
    -	vertically:(MMMLayoutVerticalAlignment)verticalAlignment
    -	insets:(UIEdgeInsets)insets NS_SWIFT_NAME(mmm_constraints(aligning:horizontally:vertically:insets:));
    - -
    -
    -

    Swift

    -
    func mmm_constraints(aligning guide: UILayoutGuide, horizontally horizontalAlignment: MMMLayoutHorizontalAlignment, vertically verticalAlignment: MMMLayoutVerticalAlignment, insets: UIEdgeInsets) -> [NSLayoutConstraint]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Adds contraints anchoring the given view within the receiver according to horizontal and vertical alignment flags. -(This is a shortcut for calling mmm_constraintsAligningView:horizontally:vertically:insets: and adding the contraints returned.)

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull NSArray<NSLayoutConstraint *> *)
    -    mmm_addConstraintsAligningView:(nonnull UIView *)subview
    -                      horizontally:
    -                          (MMMLayoutHorizontalAlignment)horizontalAlignment
    -                        vertically:(MMMLayoutVerticalAlignment)verticalAlignment
    -                            insets:(UIEdgeInsets)insets;
    - -
    -
    -

    Swift

    -
    func mmm_addConstraintsAligningView(_ subview: UIView, horizontally horizontalAlignment: MMMLayoutHorizontalAlignment, vertically verticalAlignment: MMMLayoutVerticalAlignment, insets: UIEdgeInsets) -> [NSLayoutConstraint]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (NSArray<NSLayoutConstraint *> *)mmm_addConstraintsAligningView:(UIView *)subview
    -	horizontally:(MMMLayoutHorizontalAlignment)horizontalAlignment
    -	vertically:(MMMLayoutVerticalAlignment)verticalAlignment;
    - -
    -
    -

    Swift

    -
    func mmm_addConstraintsAligningView(_ subview: UIView, horizontally horizontalAlignment: MMMLayoutHorizontalAlignment, vertically verticalAlignment: MMMLayoutVerticalAlignment) -> [NSLayoutConstraint]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Deprecated

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (NSArray<NSLayoutConstraint *> *)mmm_addConstraintsAligningView:(UIView *)subview
    -	horizontally:(MMMLayoutHorizontalAlignment)horizontalAlignment DEPRECATED_ATTRIBUTE;
    - -
    -
    -

    Swift

    -
    func mmm_addConstraintsAligningView(_ subview: UIView, horizontally horizontalAlignment: MMMLayoutHorizontalAlignment) -> [NSLayoutConstraint]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Deprecated

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (NSArray<NSLayoutConstraint *> *)mmm_addConstraintsAligningView:(UIView *)subview
    -	vertically:(MMMLayoutVerticalAlignment)verticalAlignment DEPRECATED_ATTRIBUTE;
    - -
    -
    -

    Swift

    -
    func mmm_addConstraintsAligningView(_ subview: UIView, vertically verticalAlignment: MMMLayoutVerticalAlignment) -> [NSLayoutConstraint]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Not yet activated constraints implementing a common layout idiom used with text:

    - -
      -
    • the given view is centered within the receiver,
    • -
    • certain minimum padding is ensured on the sides,
    • -
    • if maxWidth > 0, then the width of the view is limited to maxWidth, so it does not grow too wide e.g. on iPad.
    • -
    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull NSArray<NSLayoutConstraint *> *)
    -    mmm_constraintsHorizontallyCenteringView:(nonnull UIView *)view
    -                                  minPadding:(CGFloat)minPadding
    -                                    maxWidth:(CGFloat)maxWidth;
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A shortcut activating constraints returned by mmm_constraintsHorizontallyCenteringView:minPadding:maxWidth:.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)mmm_addConstraintsHorizontallyCenteringView:(nonnull UIView *)view
    -                                         minPadding:(CGFloat)minPadding
    -                                           maxWidth:(CGFloat)maxWidth;
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A shortcut activating constraints returned by mmm_constraintsHorizontallyCenteringView:minPadding:maxWidth:

    - -
      -
    • setting maxWidth to zero.
    • -
    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)mmm_addConstraintsHorizontallyCenteringView:(nonnull UIView *)view
    -                                         minPadding:(CGFloat)minPadding;
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

To be deprecated soon -

-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Deprecated

    - -
    -
    -

    Adds constraints anchoring the given subview within the receiver according to horizontal and vertical alignment flags. -The constraints are also returned, so the caller can remove them later, for example.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull NSArray<NSLayoutConstraint *> *)
    -    mmm_addConstraintsForSubview:(nonnull UIView *)subview
    -             horizontalAlignment:
    -                 (UIControlContentHorizontalAlignment)horizontalAlignment
    -               verticalAlignment:
    -                   (UIControlContentVerticalAlignment)verticalAlignment
    -                          insets:(UIEdgeInsets)insets;
    - -
    -
    -

    Swift

    -
    func mmm_addConstraints(forSubview subview: UIView, horizontalAlignment: UIControl.ContentHorizontalAlignment, verticalAlignment: UIControl.ContentVerticalAlignment, insets: UIEdgeInsets) -> [NSLayoutConstraint]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Deprecated

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (NSArray<NSLayoutConstraint *> *)mmm_addConstraintsForSubview:(UIView *)subview
    -	horizontalAlignment:(UIControlContentHorizontalAlignment)horizontalAlignment
    -	verticalAlignment:(UIControlContentVerticalAlignment)verticalAlignment
    -	DEPRECATED_ATTRIBUTE;
    - -
    -
    -

    Swift

    -
    func mmm_addConstraints(forSubview subview: UIView, horizontalAlignment: UIControl.ContentHorizontalAlignment, verticalAlignment: UIControl.ContentVerticalAlignment) -> [NSLayoutConstraint]
    - -
    -
    -
    -
    -
  • -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Adds constraints and two hidden auxiliary views ensuring that the space between the top of the subview and - topAttribute of topItem is in ‘ratio’ proportion to the space between the bottom of the subview - and bottomAttribute of bottomItem.

    - -

    To be clear: - ratio = (top space) / (bottom space)

    - -

    So you need to use 1 when you want the same size, not 0.5, for example.

    - -

    The given priority will be used for the constraints between the heights of the aux views.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)mmm_addVerticalSpaceRatioConstraintsForSubview:(nonnull UIView *)subview
    -                                               topItem:(nonnull id)topItem
    -                                          topAttribute:
    -                                              (NSLayoutAttribute)topAttribute
    -                                            bottomItem:(nonnull id)bottomItem
    -                                       bottomAttribute:
    -                                           (NSLayoutAttribute)bottomAttribute
    -                                                 ratio:(CGFloat)ratio
    -                                              priority:
    -                                                  (UILayoutPriority)priority;
    - -
    -
    -

    Swift

    -
    func mmm_addVerticalSpaceRatioConstraints(forSubview subview: UIView, topItem: Any, topAttribute: NSLayoutConstraint.Attribute, bottomItem: Any, bottomAttribute: NSLayoutConstraint.Attribute, ratio: CGFloat, priority: UILayoutPriority)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)mmm_addVerticalSpaceRatioConstraintsForSubview:(UIView *)subview
    -	topItem:(id)topItem topAttribute:(NSLayoutAttribute)topAttribute
    -	bottomItem:(id)bottomItem bottomAttribute:(NSLayoutAttribute)bottomAttribute
    -	ratio:(CGFloat)ratio;
    - -
    -
    -

    Swift

    -
    func mmm_addVerticalSpaceRatioConstraints(forSubview subview: UIView, topItem: Any, topAttribute: NSLayoutConstraint.Attribute, bottomItem: Any, bottomAttribute: NSLayoutConstraint.Attribute, ratio: CGFloat)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Deprecated

    - -
    -
    -

    Adds constrains and a hidden auxiliary view ensuring that specified item / attribute vertically divides -the subview in the specified ratio. -Unlike the previous function the ratio here is given not as (top space / bottom space), but as -(top space / (top space + bottom space)). Sorry for the confusion, deprecating this one for now.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)mmm_addVerticalSpaceRatioConstraintsForSubview:(nonnull UIView *)subview
    -                                                  item:(nonnull id)item
    -                                             attribute:
    -                                                 (NSLayoutAttribute)attribute
    -                                                 ratio:(CGFloat)ratio;
    - -
    -
    -

    Swift

    -
    func mmm_addVerticalSpaceRatioConstraints(forSubview subview: UIView, item: Any, attribute: NSLayoutConstraint.Attribute, ratio: CGFloat)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Shortcuts for compression resistance and hugging priorities.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)mmm_setVerticalCompressionResistance:(UILayoutPriority)priority;
    - -
    -
    -

    Swift

    -
    func mmm_setVerticalCompressionResistance(_ priority: UILayoutPriority)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)mmm_setHorizontalCompressionResistance:(UILayoutPriority)priority;
    - -
    -
    -

    Swift

    -
    func mmm_setHorizontalCompressionResistance(_ priority: UILayoutPriority)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)mmm_setVerticalHuggingPriority:(UILayoutPriority)priority;
    - -
    -
    -

    Swift

    -
    func mmm_setVerticalHuggingPriority(_ priority: UILayoutPriority)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)mmm_setHorizontalHuggingPriority:(UILayoutPriority)priority;
    - -
    -
    -

    Swift

    -
    func mmm_setHorizontalHuggingPriority(_ priority: UILayoutPriority)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Deprecated

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)mmm_setVerticalCompressionResistance:(UILayoutPriority)compressionResistance hugging:(UILayoutPriority)hugging DEPRECATED_ATTRIBUTE;
    - -
    -
    -

    Swift

    -
    func mmm_setVerticalCompressionResistance(_ compressionResistance: UILayoutPriority, hugging: UILayoutPriority)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Deprecated

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)mmm_setHorizontalCompressionResistance:(UILayoutPriority)compressionResistance hugging:(UILayoutPriority)hugging DEPRECATED_ATTRIBUTE;
    - -
    -
    -

    Swift

    -
    func mmm_setHorizontalCompressionResistance(_ compressionResistance: UILayoutPriority, hugging: UILayoutPriority)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)mmm_setCompressionResistanceHorizontal:(UILayoutPriority)horizontal
    -	vertical:(UILayoutPriority)vertical NS_SWIFT_NAME(mmm_setCompressionResistance(horizontal:vertical:));
    - -
    -
    -

    Swift

    -
    func mmm_setCompressionResistance(horizontal: UILayoutPriority, vertical: UILayoutPriority)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)mmm_setHuggingHorizontal:(UILayoutPriority)horizontal
    -	vertical:(UILayoutPriority)vertical NS_SWIFT_NAME(mmm_setHugging(horizontal:vertical:));
    - -
    -
    -

    Swift

    -
    func mmm_setHugging(horizontal: UILayoutPriority, vertical: UILayoutPriority)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes.html deleted file mode 100644 index 31db300..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes.html +++ /dev/null @@ -1,1552 +0,0 @@ - - - - Classes Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

Classes

-

The following classes are available globally.

- -
-
- -
-
-
-
    -
  • -
    - - - - MMMScrollViewShadows - -
    -
    -
    -
    -
    -
    -

    A helper for adding top and bottom shadows into any UIScrollView-based class. -You create an instance in your subclass and forward calls from layoutSubviews.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMScrollViewShadows : NSObject
    - -
    -
    -

    Swift

    -
    class MMMScrollViewShadows : NSObject
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Holds configuration for MMMScrollViewShadows that can be set only on initialization time.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMScrollViewShadowsSettings : NSObject
    - -
    -
    -

    Swift

    -
    class MMMScrollViewShadowsSettings : NSObject
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A view that’s used internally to render shadows in MMMAutoLayoutScrollView. -Open for reuse in cases we want to display compatible shadows but differntly controlled. -Note that this does not support Auto Layout, you have to manage its frame.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMScrollViewShadowView : UIView
    - -
    -
    -

    Swift

    -
    class MMMScrollViewShadowView : UIView
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMWebView - -
    -
    -
    -
    -
    -
    -

    Web view supporting top & bottom shadows.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMWebView : WKWebView
    - -
    -
    -

    Swift

    -
    class MMMWebView : WKWebView
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMTableViewCell - -
    -
    -
    -
    -
    -
    -

    A base for table view cells redeclareing the designated initializer into the one we typically use, -so subclasses do not have to.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMTableViewCell : UITableViewCell
    - -
    -
    -

    Swift

    -
    class MMMTableViewCell : UITableViewCell
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMViewWrappingCell - -
    -
    -
    -
    -
    -
    -

    A simple table view cell wrapping the given view.

    - -

    This is handy when you have a view already and just want to show it as one more cell.

    - -

    The view being wrapped should support Auto Layout and inflate its height properly. The cell has its selectionStyle - set to UITableViewCellSelectionStyleNone as these kind of cells typically do not appear selected.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMViewWrappingCell<ViewType> : MMMTableViewCell
    - -
    -
    -

    Swift

    -
    class MMMViewWrappingCell<ViewType> : MMMTableViewCell where ViewType : AnyObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMNavigationHop - -
    -
    -
    -
    -
    -
    -

    Opening a deep link can involve following through one or more steps, for example:

    - -

    1) make sure the main screen is visible and can switch between the pages; - 2) move to the recipes page; - 3) open recipe with ID N; - 4) scroll to ingredients, etc.

    - -

    This is a single step in such a chain.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMNavigationHop : NSObject
    - -
    -
    -

    Swift

    -
    class MMMNavigationHop : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMNavigationPath - -
    -
    -
    -
    -
    -
    -

    A navigation path is just a collection of one or more “hops”.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMNavigationPath : NSObject
    - -
    -
    -

    Swift

    -
    class MMMNavigationPath : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMNavigation - -
    -
    -
    -
    -
    -
    -

    Manages switching between different sections of the app (kind of internal URL router). -It’s like a central hub accepting navigation requests and then passing them to the entities that able to perform them. -(The entities that are able to open requests should register themselves as handlers.)

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMNavigation : NSObject
    - -
    -
    -

    Swift

    -
    class MMMNavigation : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMNavigationRequest - -
    -
    -
    -
    -
    -
    -

    Info about a navigation request that is passed to handlers.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMNavigationRequest : NSObject
    - -
    -
    -

    Swift

    -
    class MMMNavigationRequest : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMStubViewController - -
    -
    -
    -
    -
    -
    -

    This is to be used during development to stub not ready yet parts of the app.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMStubViewController : UIViewController
    - -
    -
    -

    Swift

    -
    class MMMStubViewController : UIViewController
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMImageView - -
    -
    -
    -
    -
    -
    -

    A limited replacement for UIImageView fixing its inability to properly work with images having - non-zero alignmentRectInsets when scaled.

    - -

    Note that this view is already constrained to the aspect ratio of the image’s alignment rect, - so you should not use hard (equal) pins against both width and height or against all edges.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMImageView : UIView
    - -
    -
    -

    Swift

    -
    class MMMImageView : UIView
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A vertical scroll view with a content view and preconfigured constraints, so there is no need in creating - a scroll view / content view sandwitch manually every time.

    - -

    It also supports top and bottom shadows that are displayed only when the content is clipped. - The shadows can be enabled individually and they can sit either flush with the edges of the scroll view - or can be inset according to adjustedContentInset, which can be handy when vertical safeAreaInsets need - to be taken into account. (Note that contentInsetAdjustmentBehavior has to be either None or Always - on this view since “automatic” options can lead to cyclic calculations.) Also note that scroll indicators - are disabled here by default.

    - -

    Begin by adding your controls and constraints into the contentView ensuring that its size can be derived from your - constraints alone. Avoid constraints to the scroll view itself or outside views unless you are prepared to deal - with the consequences.

    - -

    Note that the width of the contentView will be constrainted hard to be equal to the width of the scroll view - and its height will be constrained with prio 251 to be at least as large as the height of the scroll view.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMAutoLayoutScrollView : UIScrollView
    - -
    -
    -

    Swift

    -
    class MMMAutoLayoutScrollView : UIScrollView
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A subview of MMMAutoLayoutScrollView where all the subviews should be added.

    - -
      -
    • (It’s not different from UIView, but making it of its own class helps when browsing view hierarchies.)
    • -
    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMAutoLayoutScrollViewContentView : UIView
    - -
    -
    -

    Swift

    -
    class MMMAutoLayoutScrollViewContentView : UIView
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMStubView - -
    -
    -
    -
    -
    -
    -

    To be used during development as a placeholder for not yet implemented views. -It inherits a vertical scroll view so it’s possible to see that gesture recognizers of the container do not interfere -with a typical scrolling.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMStubView : UIScrollView
    - -
    -
    -

    Swift

    -
    class MMMStubView : UIScrollView
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMNavigationStack - -
    -
    -
    -
    -
    -
    -

    This is to track the navigation state of the app and have the possibility to programmatically return to registered points of - the navigation path. The actual navigation entities of the app (usually view controllers) must cooperate in order to - achieve this.

    - -

    The possibility to go back is needed to properly handle in-app links. We have a basic mechanism for this (MMMNavigation) - which allows to “open” a part of a link and forward the remaining parts to the corresponding handler down the navigation tree. - The handlers thus need to be able to “close” current navigation path before opening something new.

    - -

    Although navigation in the app is better represented by a tree, we assume here that at least the current path in this tree - can be represented as a stack. Each element of the stack can correspond to a modal view controller or alert view, for example, - but it can also correspond to a special state of the app or a screen.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMNavigationStack : NSObject
    - -
    -
    -

    Swift

    -
    class MMMNavigationStack : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMTableView - -
    -
    -
    -
    -
    -
    -

    A table view supporting top and bottom shadows.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMTableView : UITableView <MMMPreferredSizeChanges>
    - -
    -
    -

    Swift

    -
    class MMMTableView : UITableView, MMMPreferredSizeChanges
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMShadowViewSetting - -
    -
    -
    -
    -
    -
    -

    Holds configuration for MMMShadowView.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMShadowViewSetting : NSObject
    - -
    -
    -

    Swift

    -
    class MMMShadowViewSetting : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMShadowView - -
    -
    -
    -
    -
    -
    -

    Helper view for adding custom layer shadows, while taking the the shadow sizes in conserderation for its final frame.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMShadowView : UIView
    - -
    -
    -

    Swift

    -
    class MMMShadowView : UIView
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMContainerView - -
    -
    -
    -
    -
    -
    -

    Auto Layout does not support constraints against groups of items, so this is for the cases a normal UIView is -typically used as a container for such a group. -Unlike UIView we have translatesAutoresizingMaskIntoConstraints set to NO already. -Also MMMContainerView does not intercept touches but subviews still do.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMContainerView : UIView
    - -
    -
    -

    Swift

    -
    class MMMContainerView : UIView
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMLayoutUtils - -
    -
    -
    -
    -
    -
    -

    This is to group a few simple layout helpers.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMLayoutUtils : NSObject
    - -
    -
    -

    Swift

    -
    class MMMLayoutUtils : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMVelocityMeter - -
    -
    -
    -
    -
    -
    -

    A little helper for velocity/acceleration calculations: you feed it values with timestamps and can get the most recent -acceleration/velocity values.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMVelocityMeter : NSObject
    - -
    -
    -

    Swift

    -
    class MMMVelocityMeter : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMAnimation - -
    -
    -
    -
    -
    -
    -

    Minimalistic animation helpers.

    - -

    Terminology:

    - -
      -
    • Normalized time — time value from the [0; 1] range.
    • -
    • Curved time — normalized time transformed using one of the predefined animation curves.
    • -
    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMAnimation : NSObject
    - -
    -
    -

    Swift

    -
    class MMMAnimation : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMAnimator - -
    -
    -
    -
    -
    -
    -

    Minimalistic animator object in the spirit of helpers defined in MMMAnimation.

    - -

    You add animation items, which are basically a set of blocks that will be called every frame on the main run loop and - when it’s done or cancelled.

    - -

    It’s not for every case, it’s for those moments when you know the duration in advance and just need to animate a - simple custom property and don’t want to subclass CALayer or mess with its multithreaded delegates.

    - -

    The animator object does not take care of interpolation of values nor time curves, the normalized time passed into - update blocks can be transformed and values can be interpolated using simple helpers in MMMAnimation.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMAnimator : NSObject
    - -
    -
    -

    Swift

    -
    class MMMAnimator : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMAnimationHandle - -
    -
    -
    -
    -
    -
    -

    Sort of a handle returned by MMMAnimator when a new animation is scheduled. -Keep it around, otherwise the animation will be cancelled.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMAnimationHandle : NSObject
    - -
    -
    -

    Swift

    -
    class MMMAnimationHandle : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMCollectionView - -
    -
    -
    -
    -
    -
    -

    Collection view supporting top & bottom shadows.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMCollectionView : UICollectionView
    - -
    -
    -

    Swift

    -
    class MMMCollectionView : UICollectionView
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMSpacerView - -
    -
    -
    -
    -
    -
    -

    Auto Layout does not support relationships between empty spaces, so we need to use spacer views and set such -constraints between them. This one is a transparent and by default hidden view which can be used as such a spacer. -It has no intrinsic size and low content hugging and compression resistance priorities. -Unlike UIView we have translatesAutoresizingMaskIntoConstraints set to NO already.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMSpacerView : UIView
    - -
    -
    -

    Swift

    -
    class MMMSpacerView : UIView
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMStackContainer - -
    -
    -
    -
    -
    -
    -

    A container which lays out its subviews in certain direction one after another using fixed spacing between them. -It also aligns all the items along the layout line according to the given alignment settings. -Note that you must use setSubviews: method instead of feeding them one by one via addSubview:. -This is kind of a UIStackView that we understand the internals of.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMStackContainer : UIView
    - -
    -
    -

    Swift

    -
    class MMMStackContainer : UIView
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Vertical version of MMMStackContainer.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMVerticalStackContainer : MMMStackContainer
    - -
    -
    -

    Swift

    -
    class MMMVerticalStackContainer : MMMStackContainer
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Horizontal version of MMMStackContainer.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMHorizontalStackContainer : MMMStackContainer
    - -
    -
    -

    Swift

    -
    class MMMHorizontalStackContainer : MMMStackContainer
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMAutoLayoutIsolator - -
    -
    -
    -
    -
    -
    -

    Wraps a view that uses Auto Layout into a manual layout view providing sizeThatFits: for the outside world. -Can be handy with old APIs that do not fully support Auto Layout.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMAutoLayoutIsolator : UIView
    - -
    -
    -

    Swift

    -
    class MMMAutoLayoutIsolator : UIView
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMPaddedView - -
    -
    -
    -
    -
    -
    -

    Wraps a view padding it from all the sides.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMPaddedView : UIView
    - -
    -
    -

    Swift

    -
    class MMMPaddedView : UIView
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A view displaying a gradient from top to bottom. The linearity of the gradient can be controlled. -Can be handy for shadow overlays, etc.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMVerticalGradientView : UIView
    - -
    -
    -

    Swift

    -
    class MMMVerticalGradientView : UIView
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMStylesheet - -
    -
    -
    -
    -
    -
    -

    A base for app-specific stylesheets: commonly used paddings, colors, fonts, etc in a single place.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMStylesheet : NSObject
    - -
    -
    -

    Swift

    -
    class MMMStylesheet : NSObject
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Dimension converter that uses a table of scales.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @interface MMMStylesheetScaleConverter : NSObject <MMMStylesheetConverter>
    - -
    -
    -

    Swift

    -
    class MMMStylesheetScaleConverter : NSObject, MMMStylesheetConverter
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMAnimation.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMAnimation.html deleted file mode 100644 index c982b2c..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMAnimation.html +++ /dev/null @@ -1,614 +0,0 @@ - - - - MMMAnimation Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMAnimation

-
-
-

Objective-C

-
@interface MMMAnimation : NSObject
- -
-
-

Swift

-
class MMMAnimation : NSObject
- -
-
-

Minimalistic animation helpers.

- -

Terminology:

- -
    -
  • Normalized time — time value from the [0; 1] range.
  • -
  • Curved time — normalized time transformed using one of the predefined animation curves.
  • -
- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Time obtained by curving the given normalized time (from [0; 1] range).

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (CGFloat)curvedTimeForTime:(CGFloat)time curve:(MMMAnimationCurve)curve;
    - -
    -
    -

    Swift

    -
    class func curvedTime(forTime time: CGFloat, curve: MMMAnimationCurve) -> CGFloat
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Inverse function for curvedTimeForTime:curve:, i.e. when we know the value returned by curvedTimeForTime:curve: -and want the time value passed there. -This should be used sparingly (not every frame) as the implementation is no very efficient.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (CGFloat)timeForCurvedTime:(CGFloat)time curve:(MMMAnimationCurve)curve;
    - -
    -
    -

    Swift

    -
    class func time(forCurvedTime time: CGFloat, curve: MMMAnimationCurve) -> CGFloat
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Time obtained by clamping the given time into [startTime; startTime + duration], normalizing to [0; 1] range, -and then curving using a preset curve.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (CGFloat)curvedTimeForTime:(CGFloat)t
    -                   startTime:(CGFloat)startTime
    -                    duration:(CGFloat)duration
    -                       curve:(MMMAnimationCurve)curve;
    - -
    -
    -

    Swift

    -
    class func curvedTime(forTime t: CGFloat, startTime: CGFloat, duration: CGFloat, curve: MMMAnimationCurve) -> CGFloat
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A float between ‘from’ and ‘to’ corresponding to already normalized and curved time.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (CGFloat)interpolateFrom:(CGFloat)from to:(CGFloat)to time:(CGFloat)time;
    - -
    -
    -

    Swift

    -
    class func interpolate(from: CGFloat, to: CGFloat, time: CGFloat) -> CGFloat
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Deprecated

    - -
    -
    -

    This has been renamed. Use the version above.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (CGFloat)interpolateFrom:(CGFloat)from
    -                        to:(CGFloat)to
    -                curvedTime:(CGFloat)time;
    - -
    -
    -

    Swift

    -
    class func interpolate(from: CGFloat, to: CGFloat, curvedTime time: CGFloat) -> CGFloat
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Value between two floats corresponding to the given time and timing curve. -If the time is less then startTime, then ‘from’ is returned. -If the time is greater then startTime + duration, then ‘to’ is returned.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (CGFloat)interpolateFrom:(CGFloat)from
    -                        to:(CGFloat)to
    -                      time:(CGFloat)time
    -                 startTime:(CGFloat)startTime
    -                  duration:(CGFloat)duration
    -                     curve:(MMMAnimationCurve)curve;
    - -
    -
    -

    Swift

    -
    class func interpolate(from: CGFloat, to: CGFloat, time: CGFloat, startTime: CGFloat, duration: CGFloat, curve: MMMAnimationCurve) -> CGFloat
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - +colorFrom:to:time: - -
    -
    -
    -
    -
    -
    -

    A color between ‘from’ and ‘to’ corresponding to already normalized and curved time. -Only RGB colors are supported. -Interpolation is done along a straight line in the RGB space.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (nonnull UIColor *)colorFrom:(nonnull UIColor *)from
    -                            to:(nonnull UIColor *)to
    -                          time:(CGFloat)time;
    - -
    -
    -

    Swift

    -
    class func color(from: UIColor, to: UIColor, time: CGFloat) -> UIColor
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - +pointFrom:to:time: - -
    -
    -
    -
    -
    -
    -

    A point on the line between given points corresponding to already normalized and curved time.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (CGPoint)pointFrom:(CGPoint)from to:(CGPoint)to time:(CGFloat)time;
    - -
    -
    -

    Swift

    -
    class func point(from: CGPoint, to: CGPoint, time: CGFloat) -> CGPoint
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMAnimationHandle.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMAnimationHandle.html deleted file mode 100644 index 0a3f81d..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMAnimationHandle.html +++ /dev/null @@ -1,424 +0,0 @@ - - - - MMMAnimationHandle Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMAnimationHandle

-
-
-

Objective-C

-
@interface MMMAnimationHandle : NSObject
- -
-
-

Swift

-
class MMMAnimationHandle : NSObject
- -
-
-

Sort of a handle returned by MMMAnimator when a new animation is scheduled. -Keep it around, otherwise the animation will be cancelled.

- -
-
- -
-
-
-
    -
  • -
    - - - - inProgress - -
    -
    -
    -
    -
    -
    -

    YES, if the animation has not been finished yet.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) BOOL inProgress;
    - -
    -
    -

    Swift

    -
    var inProgress: Bool { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -cancel - -
    -
    -
    -
    -
    -
    -

    Finishes animation before its designated end time.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)cancel;
    - -
    -
    -

    Swift

    -
    func cancel()
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)init NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMAnimator.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMAnimator.html deleted file mode 100644 index a67c258..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMAnimator.html +++ /dev/null @@ -1,531 +0,0 @@ - - - - MMMAnimator Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMAnimator

-
-
-

Objective-C

-
@interface MMMAnimator : NSObject
- -
-
-

Swift

-
class MMMAnimator : NSObject
- -
-
-

Minimalistic animator object in the spirit of helpers defined in MMMAnimation.

- -

You add animation items, which are basically a set of blocks that will be called every frame on the main run loop and - when it’s done or cancelled.

- -

It’s not for every case, it’s for those moments when you know the duration in advance and just need to animate a - simple custom property and don’t want to subclass CALayer or mess with its multithreaded delegates.

- -

The animator object does not take care of interpolation of values nor time curves, the normalized time passed into - update blocks can be transformed and values can be interpolated using simple helpers in MMMAnimation.

- -
-
- -
-
-
-
    -
  • -
    - - - - +shared - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (instancetype)shared;
    - -
    -
    -

    Swift

    -
    class func shared() -> Self
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Schedules a new animation item.

    - -

    The updateBlock is called on every update cycle within the animation’s duration. It is guaranteed to be called with - zero time even if cancelled before the next run loop cycle. The update block is also guaranteed to be called with - time being 1 unless is cancelled earlier.

    - -

    The doneBlock is called after the animation finishes or is cancelled.

    - -

    The repeatCount parameter can be set to 0 to mean infinite repeat count.

    - -

    In case repeatCount is different from 1, then autoreverse influences the way the time changes when passed to - the updateBlock: if YES, then it’ll grow from 0 to 1 and then from 1 to 0 on the next repeat, changing back to - from 0 to 1 after this, etc; if NO, then it’ll always from from 0 to 1 on every repeat step.

    - -

    The animation will start on the next cycle of the refresh timer and will have the timestamp of this cycle as its - actual start time, so there is no need in explicit transactions: all animation added on the same run loop cycle are - guaranteed to be run in sync.

    - -

    Keep the object returned. The animation stops when the reference to this object is released.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull MMMAnimationHandle *)
    -    addAnimationWithDuration:(CGFloat)duration
    -                 updateBlock:(nonnull MMMAnimatorUpdateBlock)updateBlock
    -                   doneBlock:(nullable MMMAnimatorDoneBlock)doneBlock;
    - -
    -
    -

    Swift

    -
    func addAnimation(duration: CGFloat, update updateBlock: @escaping MMMAnimatorUpdateBlock, completion doneBlock: MMMAnimatorDoneBlock? = nil) -> MMMAnimationHandle
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (MMMAnimationHandle *)addAnimationWithDuration:(CGFloat)duration
    -	repeatCount:(NSInteger)repeatCount
    -	autoreverse:(BOOL)autoreverse
    -	updateBlock:(MMMAnimatorUpdateBlock)updateBlock
    -	doneBlock:(nullable MMMAnimatorDoneBlock)doneBlock
    -	NS_SWIFT_NAME(addAnimation(duration:repeatCount:autoreverse:update:completion:));
    - -
    -
    -

    Swift

    -
    func addAnimation(duration: CGFloat, repeatCount: Int, autoreverse: Bool, update updateBlock: @escaping MMMAnimatorUpdateBlock, completion doneBlock: MMMAnimatorDoneBlock? = nil) -> MMMAnimationHandle
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Despite the +shared method defined above you can still create own instances of this class.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)init;
    - -
    -
    -

    Swift

    -
    init()
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    For unit tests only: will synchronously run all the animations already in the animator and the ones added within - the given block in the specified number of steps, executing the given block after each step. - This is used in view-based tests for those views that run all their animations using MMMAnimator.

    - -

    The idea is that an animated action is triggered in the animationsBlock (e.g. hideAnimated:YES) and then the - stepBlock is called in the very beginning and in exactly numberOfSteps - 1 moments afterwards. The moments will be - selected, so they are spaced equally and the last one is exactly at the end of the longest animation item.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)_testRunInNumberOfSteps:(NSInteger)numberOfSteps
    -                     animations:(nonnull void (^)(void))animationsBlock
    -                    forEachStep:(nonnull void (^)(NSInteger))stepBlock;
    - -
    -
    -

    Swift

    -
    func _testRun(numberOfSteps: Int, animations animationsBlock: () -> Void, stepBlock: (Int) -> Void)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMAutoLayoutIsolator.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMAutoLayoutIsolator.html deleted file mode 100644 index 6b59f10..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMAutoLayoutIsolator.html +++ /dev/null @@ -1,486 +0,0 @@ - - - - MMMAutoLayoutIsolator Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMAutoLayoutIsolator

-
-
-

Objective-C

-
@interface MMMAutoLayoutIsolator : UIView
- -
-
-

Swift

-
class MMMAutoLayoutIsolator : UIView
- -
-
-

Wraps a view that uses Auto Layout into a manual layout view providing sizeThatFits: for the outside world. -Can be handy with old APIs that do not fully support Auto Layout.

- -
-
- -
-
-
-
    -
  • -
    - - - - view - -
    -
    -
    -
    -
    -
    -

    The view being wrapped.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) UIView *_Nonnull view;
    - -
    -
    -

    Swift

    -
    var view: UIView { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithView: - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithView:(UIView *)view NS_DESIGNATED_INITIALIZER;
    - -
    -
    -

    Swift

    -
    init(view: UIView)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)init NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithFrame: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithCoder: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithCoder:(NSCoder *)coder NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMAutoLayoutScrollView.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMAutoLayoutScrollView.html deleted file mode 100644 index 2d3d059..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMAutoLayoutScrollView.html +++ /dev/null @@ -1,506 +0,0 @@ - - - - MMMAutoLayoutScrollView Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMAutoLayoutScrollView

-
-
-

Objective-C

-
@interface MMMAutoLayoutScrollView : UIScrollView
- -
-
-

Swift

-
class MMMAutoLayoutScrollView : UIScrollView
- -
-
-

A vertical scroll view with a content view and preconfigured constraints, so there is no need in creating - a scroll view / content view sandwitch manually every time.

- -

It also supports top and bottom shadows that are displayed only when the content is clipped. - The shadows can be enabled individually and they can sit either flush with the edges of the scroll view - or can be inset according to adjustedContentInset, which can be handy when vertical safeAreaInsets need - to be taken into account. (Note that contentInsetAdjustmentBehavior has to be either None or Always - on this view since “automatic” options can lead to cyclic calculations.) Also note that scroll indicators - are disabled here by default.

- -

Begin by adding your controls and constraints into the contentView ensuring that its size can be derived from your - constraints alone. Avoid constraints to the scroll view itself or outside views unless you are prepared to deal - with the consequences.

- -

Note that the width of the contentView will be constrainted hard to be equal to the width of the scroll view - and its height will be constrained with prio 251 to be at least as large as the height of the scroll view.

- -
-
- -
-
-
-
    -
  • -
    - - - - contentView - -
    -
    -
    -
    -
    -
    -

    This is where your content subviews should be added.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) MMMAutoLayoutScrollViewContentView *_Nonnull contentView;
    - -
    -
    -

    Swift

    -
    var contentView: MMMAutoLayoutScrollViewContentView { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithSettings: - -
    -
    -
    -
    -
    -
    -

    Initializes with the given config.

    -
    -

    Note

    - Note that changing the config after the initialization has no effect on the view. - -
    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)initWithSettings:(nonnull MMMScrollViewShadowsSettings *)settings;
    - -
    -
    -

    Swift

    -
    init(settings: MMMScrollViewShadowsSettings)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Initializes with default settings, a shortcut for initWithSettings:[[MMMScrollViewShadowsSettings alloc] init].

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)init;
    - -
    -
    -

    Swift

    -
    convenience init()
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithCoder: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithFrame: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMCollectionView.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMCollectionView.html deleted file mode 100644 index 5291e31..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMCollectionView.html +++ /dev/null @@ -1,485 +0,0 @@ - - - - MMMCollectionView Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMCollectionView

-
-
-

Objective-C

-
@interface MMMCollectionView : UICollectionView
- -
-
-

Swift

-
class MMMCollectionView : UICollectionView
- -
-
-

Collection view supporting top & bottom shadows.

- -
-
- -
-
-
-
    -
  • -
    - - - - -initWithSettings: - -
    -
    -
    -
    -
    -
    -

    Uses UICollectionViewFlowLayout by default.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull instancetype)initWithSettings:
    -    (nonnull MMMScrollViewShadowsSettings *)settings;
    - -
    -
    -

    Swift

    -
    init(settings: MMMScrollViewShadowsSettings)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (instancetype)initWithFrame:(CGRect)frame collectionViewLayout:(UICollectionViewLayout *)layout NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithCoder: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (instancetype)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithFrame: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (instancetype)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (instancetype)init NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMContainerView.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMContainerView.html deleted file mode 100644 index 7587cf6..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMContainerView.html +++ /dev/null @@ -1,425 +0,0 @@ - - - - MMMContainerView Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMContainerView

-
-
-

Objective-C

-
@interface MMMContainerView : UIView
- -
-
-

Swift

-
class MMMContainerView : UIView
- -
-
-

Auto Layout does not support constraints against groups of items, so this is for the cases a normal UIView is -typically used as a container for such a group. -Unlike UIView we have translatesAutoresizingMaskIntoConstraints set to NO already. -Also MMMContainerView does not intercept touches but subviews still do.

- -
-
- -
-
-
-
    -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)init NS_DESIGNATED_INITIALIZER;
    - -
    -
    -

    Swift

    -
    init()
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithCoder: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithFrame: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMHorizontalStackContainer.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMHorizontalStackContainer.html deleted file mode 100644 index 12afa88..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMHorizontalStackContainer.html +++ /dev/null @@ -1,396 +0,0 @@ - - - - MMMHorizontalStackContainer Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMHorizontalStackContainer

-
-
-

Objective-C

-
@interface MMMHorizontalStackContainer : MMMStackContainer
- -
-
-

Swift

-
class MMMHorizontalStackContainer : MMMStackContainer
- -
-
-

Horizontal version of MMMStackContainer.

- -
-
- -
-
-
- -
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMImageView.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMImageView.html deleted file mode 100644 index 3d0f668..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMImageView.html +++ /dev/null @@ -1,586 +0,0 @@ - - - - MMMImageView Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMImageView

-
-
-

Objective-C

-
@interface MMMImageView : UIView
- -
-
-

Swift

-
class MMMImageView : UIView
- -
-
-

A limited replacement for UIImageView fixing its inability to properly work with images having - non-zero alignmentRectInsets when scaled.

- -

Note that this view is already constrained to the aspect ratio of the image’s alignment rect, - so you should not use hard (equal) pins against both width and height or against all edges.

- -
-
- -
-
-
-
    -
  • -
    - - - - image - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, nullable) UIImage *image
    - -
    -
    -

    Swift

    -
    var image: UIImage? { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - highlightedImage - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, nullable) UIImage *highlightedImage
    - -
    -
    -

    Swift

    -
    var highlightedImage: UIImage? { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - highlighted - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, getter=isHighlighted) BOOL highlighted
    - -
    -
    -

    Swift

    -
    var isHighlighted: Bool { get set }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithImage:(nullable UIImage *)image highlightedImage:(nullable UIImage *)highlightedImage NS_DESIGNATED_INITIALIZER;
    - -
    -
    -

    Swift

    -
    init(image: UIImage?, highlightedImage: UIImage?)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Convenience initializer.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)init;
    - -
    -
    -

    Swift

    -
    convenience init()
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithImage: - -
    -
    -
    -
    -
    -
    -

    Convenience initializer.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)initWithImage:(nullable UIImage *)image;
    - -
    -
    -

    Swift

    -
    convenience init(image: UIImage?)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithFrame: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithCoder: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMLayoutUtils.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMLayoutUtils.html deleted file mode 100644 index 614d9c1..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMLayoutUtils.html +++ /dev/null @@ -1,512 +0,0 @@ - - - - MMMLayoutUtils Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMLayoutUtils

-
-
-

Objective-C

-
@interface MMMLayoutUtils : NSObject
- -
-
-

Swift

-
class MMMLayoutUtils : NSObject
- -
-
-

This is to group a few simple layout helpers.

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    A rect with the given size positioned inside of the target rect in such a way that anchor points of both rects align.

    - -

    Anchor points are given relative to the sizes of the corresponding rects, similar to CALayer’s anchorPoint - property. For example, CGPointMake(0.5, 0.5) represents a center of any rect; CGPointMake(1, 0.5) means - the center point of the right vertical edge.

    - -

    Note that the origin of the rect returned is rounded to the nearest pixels (not points!).

    - -

    See rectWithSize:inRect:contentMode: for a shortcut supporting UIViewContentMode.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (CGRect)rectWithSize:(CGSize)size
    -                anchor:(CGPoint)anchor
    -            withinRect:(CGRect)targetRect
    -                anchor:(CGPoint)targetAnchor;
    - -
    -
    -

    Swift

    -
    class func rect(withSize size: CGSize, anchor: CGPoint, withinRect targetRect: CGRect, anchor targetAnchor: CGPoint) -> CGRect
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A shortcut for the above method with anchors being the same for both source and target rect. -(This way the resulting rect will be always inside of the target one, assuming anchors are within [0; 1] range.)

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (CGRect)rectWithSize:(CGSize)size
    -            withinRect:(CGRect)targetRect
    -                anchor:(CGPoint)anchor;
    - -
    -
    -

    Swift

    -
    class func rect(withSize size: CGSize, withinRect targetRect: CGRect, anchor: CGPoint) -> CGRect
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A frame for the sourceRect positioned within the targetRect according to standard UIViewContentMode flags - related to the layout (i.e. all except UIViewContentModeRedraw).

    - -

    Note that the origin of the resulting rectangle is always rounded to the nearest pixel.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (CGRect)rectWithSize:(CGSize)size
    -            withinRect:(CGRect)targetRect
    -           contentMode:(UIViewContentMode)contentMode;
    - -
    -
    -

    Swift

    -
    class func rect(withSize size: CGSize, withinRect targetRect: CGRect, contentMode: UIView.ContentMode) -> CGRect
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A frame of the given size with its center at the specified point (assuming the center is defined by the given anchor - point).

    - -

    Note that the origin of the resulting rectangle is rounded to the nearest pixel boundary.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (CGRect)rectWithSize:(CGSize)size
    -               atPoint:(CGPoint)center
    -                anchor:(CGPoint)anchor;
    - -
    -
    -

    Swift

    -
    class func rect(withSize size: CGSize, atPoint center: CGPoint, anchor: CGPoint) -> CGRect
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - +rectWithSize:center: - -
    -
    -
    -
    -
    -
    -

    Same as rectWithSize:center:anchor: with anchor set to (0.5, 0.5).

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (CGRect)rectWithSize:(CGSize)size center:(CGPoint)center;
    - -
    -
    -

    Swift

    -
    class func rect(withSize size: CGSize, center: CGPoint) -> CGRect
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMNavigation.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMNavigation.html deleted file mode 100644 index caa4a55..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMNavigation.html +++ /dev/null @@ -1,476 +0,0 @@ - - - - MMMNavigation Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMNavigation

-
-
-

Objective-C

-
@interface MMMNavigation : NSObject
- -
-
-

Swift

-
class MMMNavigation : NSObject
- -
-
-

Manages switching between different sections of the app (kind of internal URL router). -It’s like a central hub accepting navigation requests and then passing them to the entities that able to perform them. -(The entities that are able to open requests should register themselves as handlers.)

- -
-
- -
-
-
-
    -
  • -
    - - - - +root - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (instancetype)root;
    - -
    -
    -

    Swift

    -
    class func root() -> Self
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Starts the process of opening of the given path. Calls the completion block when done, the block receives ID of the -corresponding request. Links are opened one by one. Any navigation request received while handling the current one -will be queued.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull MMMNavigationRequestId)
    -    navigateTo:(nonnull MMMNavigationPath *)path
    -    completion:(nonnull MMMNavigationCompletionBlock)completion;
    - -
    -
    -

    Swift

    -
    func navigate(to path: MMMNavigationPath, completion: @escaping MMMNavigationCompletionBlock) -> Any
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Handlers -

-
-
-
    -
  • -
    - - - - -addHandler: - -
    -
    -
    -
    -
    -
    -

    Adds a handler and returns a cookie/ID object that can be later used to remove it.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull MMMNavigationHandlerId)addHandler:
    -    (nonnull id<MMMNavigationHandler>)handler;
    - -
    -
    -

    Swift

    -
    func add(_ handler: MMMNavigationHandler) -> Any
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -removeHandlerWithId: - -
    -
    -
    -
    -
    -
    -

    Removes a handler by its ID assigned by addHandler.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)removeHandlerWithId:(nonnull MMMNavigationHandlerId)handlerId;
    - -
    -
    -

    Swift

    -
    func removeHandler(withId handlerId: Any)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMNavigationHop.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMNavigationHop.html deleted file mode 100644 index 890f94e..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMNavigationHop.html +++ /dev/null @@ -1,494 +0,0 @@ - - - - MMMNavigationHop Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMNavigationHop

-
-
-

Objective-C

-
@interface MMMNavigationHop : NSObject
- -
-
-

Swift

-
class MMMNavigationHop : NSObject
- -
-
-

Opening a deep link can involve following through one or more steps, for example:

- -

1) make sure the main screen is visible and can switch between the pages; - 2) move to the recipes page; - 3) open recipe with ID N; - 4) scroll to ingredients, etc.

- -

This is a single step in such a chain.

- -
-
- -
-
-
-
    -
  • -
    - - - - action - -
    -
    -
    -
    -
    -
    -

    Name/ID of the hop. Supposed to be a flat string, like ‘recipes’, not a path.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) NSString *_Nonnull action;
    - -
    -
    -

    Swift

    -
    var action: String { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - params - -
    -
    -
    -
    -
    -
    -

    Optional parameters for this hop only.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly, nullable) NSDictionary<NSString *, id> *params;
    - -
    -
    -

    Swift

    -
    var params: [String : Any]? { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithAction:(NSString *)action params:(nullable NSDictionary<NSString*, id> *)params NS_DESIGNATED_INITIALIZER;
    - -
    -
    -

    Swift

    -
    init(action: String, params: [String : Any]?)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithAction: - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithAction:(NSString *)action;
    - -
    -
    -

    Swift

    -
    convenience init(action: String)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)init NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMNavigationPath.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMNavigationPath.html deleted file mode 100644 index 3b0cdda..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMNavigationPath.html +++ /dev/null @@ -1,520 +0,0 @@ - - - - MMMNavigationPath Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMNavigationPath

-
-
-

Objective-C

-
@interface MMMNavigationPath : NSObject
- -
-
-

Swift

-
class MMMNavigationPath : NSObject
- -
-
-

A navigation path is just a collection of one or more “hops”.

- -
-
- -
-
-
-
    -
  • -
    - - - - hops - -
    -
    -
    -
    -
    -
    -

    All the “hops” the link consists of.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) NSArray<MMMNavigationHop *> *_Nonnull hops;
    - -
    -
    -

    Swift

    -
    var hops: [MMMNavigationHop] { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -pathWithoutFirstHop - -
    -
    -
    -
    -
    -
    -

    A new path obtained from the current one by removing the first hop.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nullable MMMNavigationPath *)pathWithoutFirstHop;
    - -
    -
    -

    Swift

    -
    func pathWithoutFirstHop() -> MMMNavigationPath?
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -firstHop - -
    -
    -
    -
    -
    -
    -

    The first hop in the path or nil if the path is empty.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nullable MMMNavigationHop *)firstHop;
    - -
    -
    -

    Swift

    -
    func firstHop() -> MMMNavigationHop?
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithHops: - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithHops:(NSArray<MMMNavigationHop *> *)hops NS_DESIGNATED_INITIALIZER;
    - -
    -
    -

    Swift

    -
    init(hops: [MMMNavigationHop])
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithURI: - -
    -
    -
    -
    -
    -
    -

    Convenience initializer. Allows to use URIs like “main/recipes”, to construct hops out of it. -Note that it does not currently support hop parameters.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)initWithURI:(nonnull NSString *)uri;
    - -
    -
    -

    Swift

    -
    convenience init(uri: String)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)init NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMNavigationRequest.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMNavigationRequest.html deleted file mode 100644 index 6c743cc..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMNavigationRequest.html +++ /dev/null @@ -1,459 +0,0 @@ - - - - MMMNavigationRequest Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMNavigationRequest

-
-
-

Objective-C

-
@interface MMMNavigationRequest : NSObject
- -
-
-

Swift

-
class MMMNavigationRequest : NSObject
- -
-
-

Info about a navigation request that is passed to handlers.

- -
-
- -
-
-
-
    -
  • -
    - - - - originalPath - -
    -
    -
    -
    -
    -
    -

    A sequence of hops the request has started with. This is never changed during lifetime of the request.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) MMMNavigationPath *_Nonnull originalPath;
    - -
    -
    -

    Swift

    -
    var originalPath: MMMNavigationPath { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - path - -
    -
    -
    -
    -
    -
    -

    The current sequence of hops to follow. Handlers can adjust this.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) MMMNavigationPath *_Nonnull path;
    - -
    -
    -

    Swift

    -
    var path: MMMNavigationPath { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Called by the handler when all the hops in the path were followed through.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)didFinishSuccessfully:(BOOL)successfully;
    - -
    -
    -

    Swift

    -
    func didFinishSuccessfully(_ successfully: Bool)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Called by the handler to indicate that the sequence of hops (possibly changed) should be continued by another handler. -The handler is supposed to conform to MMMNavigationHandler protocol and this will be checked for in this method. -The parameter here is not described as id to make it more convenient to call this method.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)continueWithPath:(nonnull MMMNavigationPath *)path
    -                 handler:(nonnull id)handler;
    - -
    -
    -

    Swift

    -
    func `continue`(with path: MMMNavigationPath, handler: Any)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMNavigationStack.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMNavigationStack.html deleted file mode 100644 index a034f33..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMNavigationStack.html +++ /dev/null @@ -1,450 +0,0 @@ - - - - MMMNavigationStack Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMNavigationStack

-
-
-

Objective-C

-
@interface MMMNavigationStack : NSObject
- -
-
-

Swift

-
class MMMNavigationStack : NSObject
- -
-
-

This is to track the navigation state of the app and have the possibility to programmatically return to registered points of - the navigation path. The actual navigation entities of the app (usually view controllers) must cooperate in order to - achieve this.

- -

The possibility to go back is needed to properly handle in-app links. We have a basic mechanism for this (MMMNavigation) - which allows to “open” a part of a link and forward the remaining parts to the corresponding handler down the navigation tree. - The handlers thus need to be able to “close” current navigation path before opening something new.

- -

Although navigation in the app is better represented by a tree, we assume here that at least the current path in this tree - can be represented as a stack. Each element of the stack can correspond to a modal view controller or alert view, for example, - but it can also correspond to a special state of the app or a screen.

- -
-
- -
-
-
-
    -
  • -
    - - - - +shared - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    + (instancetype)shared;
    - -
    -
    -

    Swift

    -
    class func shared() -> Self
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Notifies the stack about a new modal navigation context facing the user now, such as a modal view controller being presented or - any other special state of the UI which would require either the assistance from the user or navigation items’ delegate - in order to return to the previous navigation step.

    - -

    Again, navigation steps are not limited to modal view controllers, there can be any entity responsible for the current - state of the UI which wants to clean it up properly when asked for via the corresponding delegate.

    - -

    The optional controller parameter might be a view controller corresponding to the new navigation item. This can be used by - this controller with popAllAfterController:completion: method in order to cancel/pop all the navigation items added after it.

    - -

    A nil is returned if it’s not possible to push anything now (because the stack is in the middle of a change).

    - -

    For now trying to push something when “popping” is in progress is considered a programmer’s error however and it will crash - in Debug.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nullable id<MMMNavigationStackItem>)
    -    pushItemWithName:(nonnull NSString *)name
    -            delegate:(nonnull id<MMMNavigationStackItemDelegate>)delegate
    -          controller:(nullable id)controller;
    - -
    -
    -

    Swift

    -
    func pushItem(name: String, delegate: MMMNavigationStackItemDelegate, controller: Any?) -> MMMNavigationStackItem?
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (BOOL)popAllAfterController:(id)controller completion:(MMMNavigationStackCompletion)completion;
    - -
    -
    -

    Swift

    -
    func popAll(afterController controller: Any, completion: @escaping MMMNavigationStackCompletion) -> Bool
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMPaddedView.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMPaddedView.html deleted file mode 100644 index 21c1134..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMPaddedView.html +++ /dev/null @@ -1,517 +0,0 @@ - - - - MMMPaddedView Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMPaddedView

-
-
-

Objective-C

-
@interface MMMPaddedView : UIView
- -
-
-

Swift

-
class MMMPaddedView : UIView
- -
-
-

Wraps a view padding it from all the sides.

- -
-
- -
-
-
-
    -
  • -
    - - - - view - -
    -
    -
    -
    -
    -
    -

    The view being wrapped.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) UIView *_Nonnull view;
    - -
    -
    -

    Swift

    -
    var view: UIView { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - insets - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) UIEdgeInsets insets
    - -
    -
    -

    Swift

    -
    var insets: UIEdgeInsets { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithView:insets: - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithView:(UIView *)view insets:(UIEdgeInsets)insets NS_DESIGNATED_INITIALIZER;
    - -
    -
    -

    Swift

    -
    init(view: UIView, insets: UIEdgeInsets)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)init NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithFrame: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithCoder: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithCoder:(NSCoder *)coder NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMScrollViewShadowView.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMScrollViewShadowView.html deleted file mode 100644 index 7b7cc8e..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMScrollViewShadowView.html +++ /dev/null @@ -1,456 +0,0 @@ - - - - MMMScrollViewShadowView Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMScrollViewShadowView

-
-
-

Objective-C

-
@interface MMMScrollViewShadowView : UIView
- -
-
-

Swift

-
class MMMScrollViewShadowView : UIView
- -
-
-

A view that’s used internally to render shadows in MMMAutoLayoutScrollView. -Open for reuse in cases we want to display compatible shadows but differntly controlled. -Note that this does not support Auto Layout, you have to manage its frame.

- -
-
- -
-
-
- -
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMScrollViewShadows.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMScrollViewShadows.html deleted file mode 100644 index 143f10a..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMScrollViewShadows.html +++ /dev/null @@ -1,494 +0,0 @@ - - - - MMMScrollViewShadows Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMScrollViewShadows

-
-
-

Objective-C

-
@interface MMMScrollViewShadows : NSObject
- -
-
-

Swift

-
class MMMScrollViewShadows : NSObject
- -
-
-

A helper for adding top and bottom shadows into any UIScrollView-based class. -You create an instance in your subclass and forward calls from layoutSubviews.

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)initWithScrollView:(nonnull UIScrollView *)scrollView
    -	settings:(nonnull MMMScrollViewShadowsSettings *)settings NS_DESIGNATED_INITIALIZER;
    - -
    -
    -

    Swift

    -
    init(scrollView: UIScrollView, settings: MMMScrollViewShadowsSettings)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)init NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -layoutSubviews - -
    -
    -
    -
    -
    -
    -

    Have to be called from layoutSubviews of our scroll view subclass to update the state of the shadows.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)layoutSubviews;
    - -
    -
    -

    Swift

    -
    func layoutSubviews()
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    YES, if additional content view clipping might be needed for the current shadow settings.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (BOOL)mightNeedClippingView;
    - -
    -
    -

    Swift

    -
    func mightNeedClippingView() -> Bool
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Same as layoutSubviews above but also updates clipToBounds property of the given view in case there are visible

    - -
      -
    • shadows that are not flush with the edges of our scroll view, i.e. when top/bottomShadowShouldUseContentInsets
    • -
    • are used with settings and the corresponding insets are not zero now.
    • -
    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)layoutSubviewsWithClippingView:(nullable UIView *)clippingView;
    - -
    -
    -

    Swift

    -
    func layoutSubviews(withClippingView clippingView: UIView?)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMScrollViewShadowsSettings.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMScrollViewShadowsSettings.html deleted file mode 100644 index 4d90caa..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMScrollViewShadowsSettings.html +++ /dev/null @@ -1,666 +0,0 @@ - - - - MMMScrollViewShadowsSettings Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMScrollViewShadowsSettings

-
-
-

Objective-C

-
@interface MMMScrollViewShadowsSettings : NSObject
- -
-
-

Swift

-
class MMMScrollViewShadowsSettings : NSObject
- -
-
-

Holds configuration for MMMScrollViewShadows that can be set only on initialization time.

- -
-
- -
-
-
-
    -
  • -
    - - - - shadowAlpha - -
    -
    -
    -
    -
    -
    -

    The base shadow color is black with this amount of transparency applied to it.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) CGFloat shadowAlpha;
    - -
    -
    -

    Swift

    -
    var shadowAlpha: CGFloat { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - shadowColor - -
    -
    -
    -
    -
    -
    -

    The base shadow color, ensure this is an RGB color. Note that the alpha channel is ignored, use shadowAlpha instead.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) UIColor *_Nonnull shadowColor;
    - -
    -
    -

    Swift

    -
    var shadowColor: UIColor { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - shadowCurvature - -
    -
    -
    -
    -
    -
    -

    The value between 0 and 1 telling how close to an elliptical curve the shadow’s border should be.

    - -
      -
    • when it’s 0, then the shadow is a normal rectangular one.

    • -
    • when it’s 1, then the gradient of the top (bottom) shadow forms an arc crossing the center of a shadow view and -its both corners.

    • -
    - -

    All values in-between adjust the point at which the gradient crosses the sides of the shadow views.

    - -

    (The default value is 0.5.)

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) CGFloat shadowCurvature;
    - -
    -
    -

    Swift

    -
    var shadowCurvature: CGFloat { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - topShadowEnabled - -
    -
    -
    -
    -
    -
    -

    Disabled by default.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) BOOL topShadowEnabled;
    - -
    -
    -

    Swift

    -
    var topShadowEnabled: Bool { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - topShadowHeight - -
    -
    -
    -
    -
    -
    -

    The height of the top shadow view. (5px by default.)

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) CGFloat topShadowHeight;
    - -
    -
    -

    Swift

    -
    var topShadowHeight: CGFloat { get set }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    YES, if the top shadow should be offset from the top edge of the scroll view by the top offset of content insets.

    - -
      -
    • The default value is NO.
    • -
    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) BOOL topShadowShouldUseContentInsets;
    - -
    -
    -

    Swift

    -
    var topShadowShouldUseContentInsets: Bool { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - bottomShadowEnabled - -
    -
    -
    -
    -
    -
    -

    Disabled by default.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) BOOL bottomShadowEnabled;
    - -
    -
    -

    Swift

    -
    var bottomShadowEnabled: Bool { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - bottomShadowHeight - -
    -
    -
    -
    -
    -
    -

    The height of the bottom shadow view. (10px by default.)

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) CGFloat bottomShadowHeight;
    - -
    -
    -

    Swift

    -
    var bottomShadowHeight: CGFloat { get set }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    YES, if the bottom shadow should be offset from the bottom edge of the scroll view by the bottom offset of content insets.

    - -
      -
    • The default value is NO.
    • -
    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) BOOL bottomShadowShouldUseContentInsets;
    - -
    -
    -

    Swift

    -
    var bottomShadowShouldUseContentInsets: Bool { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)init NS_DESIGNATED_INITIALIZER;
    - -
    -
    -

    Swift

    -
    init()
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMShadowView.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMShadowView.html deleted file mode 100644 index 63420b7..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMShadowView.html +++ /dev/null @@ -1,518 +0,0 @@ - - - - MMMShadowView Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMShadowView

-
-
-

Objective-C

-
@interface MMMShadowView : UIView
- -
-
-

Swift

-
class MMMShadowView : UIView
- -
-
-

Helper view for adding custom layer shadows, while taking the the shadow sizes in conserderation for its final frame.

- -
-
- -
-
-
-
    -
  • -
    - - - - contentView - -
    -
    -
    -
    -
    -
    -

    View that can accepts and lay out subviews.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) UIView *_Nonnull contentView;
    - -
    -
    -

    Swift

    -
    var contentView: UIView { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - settings - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, nullable) NSArray<MMMShadowViewSetting *> *settings
    - -
    -
    -

    Swift

    -
    var settings: [MMMShadowViewSetting]? { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)init;
    - -
    -
    -

    Swift

    -
    init()
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithSettings: - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithSettings:(nullable NSArray<MMMShadowViewSetting *> *)settings;
    - -
    -
    -

    Swift

    -
    init(settings: [MMMShadowViewSetting]?)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithFrame: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithCoder: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithCoder:(NSCoder *)coder NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMShadowViewSetting.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMShadowViewSetting.html deleted file mode 100644 index c527979..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMShadowViewSetting.html +++ /dev/null @@ -1,616 +0,0 @@ - - - - MMMShadowViewSetting Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMShadowViewSetting

-
-
-

Objective-C

-
@interface MMMShadowViewSetting : NSObject
- -
-
-

Swift

-
class MMMShadowViewSetting : NSObject
- -
-
-

Holds configuration for MMMShadowView.

- -
-
- -
-
-
-
    -
  • -
    - - - - color - -
    -
    -
    -
    -
    -
    -

    Default is black color.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) UIColor *_Nonnull color;
    - -
    -
    -

    Swift

    -
    var color: UIColor { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - opacity - -
    -
    -
    -
    -
    -
    -

    Default is 0.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) CGFloat opacity;
    - -
    -
    -

    Swift

    -
    var opacity: CGFloat { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - offset - -
    -
    -
    -
    -
    -
    -

    Default is zero.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) CGSize offset;
    - -
    -
    -

    Swift

    -
    var offset: CGSize { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - radius - -
    -
    -
    -
    -
    -
    -

    Default is 0.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) CGFloat radius;
    - -
    -
    -

    Swift

    -
    var radius: CGFloat { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - insets - -
    -
    -
    -
    -
    -
    -

    Default is zero.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) UIEdgeInsets insets;
    - -
    -
    -

    Swift

    -
    var insets: UIEdgeInsets { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - backgroundColor - -
    -
    -
    -
    -
    -
    -

    Default is white color.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) UIColor *_Nonnull backgroundColor;
    - -
    -
    -

    Swift

    -
    var backgroundColor: UIColor { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - cornerRadius - -
    -
    -
    -
    -
    -
    -

    Default is 0.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) CGFloat cornerRadius;
    - -
    -
    -

    Swift

    -
    var cornerRadius: CGFloat { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)init;
    - -
    -
    -

    Swift

    -
    init()
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithBlock: - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithBlock:(MMMShadowViewSettingBlock)block;
    - -
    -
    -

    Swift

    -
    init(block: @escaping MMMShadowViewSettingBlock)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMSpacerView.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMSpacerView.html deleted file mode 100644 index f0dc158..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMSpacerView.html +++ /dev/null @@ -1,425 +0,0 @@ - - - - MMMSpacerView Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMSpacerView

-
-
-

Objective-C

-
@interface MMMSpacerView : UIView
- -
-
-

Swift

-
class MMMSpacerView : UIView
- -
-
-

Auto Layout does not support relationships between empty spaces, so we need to use spacer views and set such -constraints between them. This one is a transparent and by default hidden view which can be used as such a spacer. -It has no intrinsic size and low content hugging and compression resistance priorities. -Unlike UIView we have translatesAutoresizingMaskIntoConstraints set to NO already.

- -
-
- -
-
-
-
    -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)init NS_DESIGNATED_INITIALIZER;
    - -
    -
    -

    Swift

    -
    init()
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithCoder: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithFrame: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMStackContainer.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMStackContainer.html deleted file mode 100644 index d89cb18..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMStackContainer.html +++ /dev/null @@ -1,493 +0,0 @@ - - - - MMMStackContainer Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMStackContainer

-
-
-

Objective-C

-
@interface MMMStackContainer : UIView
- -
-
-

Swift

-
class MMMStackContainer : UIView
- -
-
-

A container which lays out its subviews in certain direction one after another using fixed spacing between them. -It also aligns all the items along the layout line according to the given alignment settings. -Note that you must use setSubviews: method instead of feeding them one by one via addSubview:. -This is kind of a UIStackView that we understand the internals of.

- -
-
- -
-
-
-
    -
  • -
    - - - - -setSubviews: - -
    -
    -
    -
    -
    -
    -

    Sets subviews to be laid out. Previously set subviews will be removed from this container first.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)setSubviews:(nonnull NSArray<UIView *> *)subviews;
    - -
    -
    -

    Swift

    -
    func setSubviews(_ subviews: [UIView])
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Insets define the padding around all the subviews. -Alignment influences horizontal constraints added for the subviews. -Spacing is the fixed distance to set between items.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)initWithDirection:(MMMLayoutDirection)direction
    -                         insets:(UIEdgeInsets)insets
    -                      alignment:(MMMLayoutAlignment)alignment
    -                        spacing:(CGFloat)spacing;
    - -
    -
    -

    Swift

    -
    init(direction: MMMLayoutDirection, insets: UIEdgeInsets, alignment: MMMLayoutAlignment, spacing: CGFloat)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)init NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithFrame: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithCoder: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMStubView.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMStubView.html deleted file mode 100644 index 340031a..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMStubView.html +++ /dev/null @@ -1,455 +0,0 @@ - - - - MMMStubView Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMStubView

-
-
-

Objective-C

-
@interface MMMStubView : UIScrollView
- -
-
-

Swift

-
class MMMStubView : UIScrollView
- -
-
-

To be used during development as a placeholder for not yet implemented views. -It inherits a vertical scroll view so it’s possible to see that gesture recognizers of the container do not interfere -with a typical scrolling.

- -
-
- -
-
-
-
    -
  • -
    - - - - -initWithText:index: - -
    -
    -
    -
    -
    -
    -

    The text is optional, the index influences the background color.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)initWithText:(nullable NSString *)text index:(NSInteger)index;
    - -
    -
    -

    Swift

    -
    init(text: String?, index: Int)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)init NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithCoder: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithFrame: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMStubViewController.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMStubViewController.html deleted file mode 100644 index 5e1ce05..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMStubViewController.html +++ /dev/null @@ -1,453 +0,0 @@ - - - - MMMStubViewController Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMStubViewController

-
-
-

Objective-C

-
@interface MMMStubViewController : UIViewController
- -
-
-

Swift

-
class MMMStubViewController : UIViewController
- -
-
-

This is to be used during development to stub not ready yet parts of the app.

- -
-
- -
-
-
-
    -
  • -
    - - - - -initWithText:index: - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithText:(NSString *)text index:(NSInteger)index NS_DESIGNATED_INITIALIZER;
    - -
    -
    -

    Swift

    -
    init(text: String, index: Int)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)init NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithCoder: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithNibName:(nullable NSString *)nibNameOrNil bundle:(nullable NSBundle *)nibBundleOrNil NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMStylesheet.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMStylesheet.html deleted file mode 100644 index 5502b8b..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMStylesheet.html +++ /dev/null @@ -1,934 +0,0 @@ - - - - MMMStylesheet Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMStylesheet

-
-
-

Objective-C

-
@interface MMMStylesheet : NSObject
- -
-
-

Swift

-
class MMMStylesheet : NSObject
- -
-
-

A base for app-specific stylesheets: commonly used paddings, colors, fonts, etc in a single place.

- -
-
- -
-
-
-
    -
  • -
    - - - - currentSizeClass - -
    -
    -
    -
    -
    -
    -

    The size class of the current device. See the MMSize* string constants below.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) NSString *_Nonnull currentSizeClass;
    - -
    -
    -

    Swift

    -
    var currentSizeClass: String { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Allows to avoid code that picks values (fonts, sizes, etc) by explicitely matching currentSizeClass. -A mapping of size classes to values is passed here instead and a match is returned, falling back either to the value -under MMMSizeRest key, or, if it is not present, to the value under the key that seems the closest to the current -size class.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)valueForCurrentSizeClass:
    -    (nonnull NSDictionary<NSString *, id> *)sizeClassToValue;
    - -
    -
    -

    Swift

    -
    func value(forCurrentSizeClass sizeClassToValue: [String : Any]) -> Any
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A version of valueForCurrentSizeClass: unwrapping the result as a float, which is handy for numeric values.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (CGFloat)floatForCurrentSizeClass:
    -    (nonnull NSDictionary<NSString *, NSNumber *> *)sizeClassToValue;
    - -
    -
    -

    Swift

    -
    func float(forCurrentSizeClass sizeClassToValue: [String : NSNumber]) -> CGFloat
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Deprecated

    -

    Try using widthBasedConverter instead or a custom converter if you relied on 2 dimensions

    - -
    -
    -

    Deprecated. -Similar to floatForCurrentSizeClass: but instead of falling back to the value under MMMSizeRest key -it tries to extrapolate the requested dimension using 1 or 2 values provided for other size classes using -the widthBasedConverter.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (CGFloat)extrapolatedFloatForCurrentSizeClass:
    -    (nonnull NSDictionary<NSString *, NSNumber *> *)sizeClassToValue;
    - -
    -
    -

    Swift

    -
    func extrapolatedFloat(forCurrentSizeClass sizeClassToValue: [String : NSNumber]) -> CGFloat
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Deprecated

    -

    The code using this might be confusing and/or hard to support. If you need to specify values for different size classes, then list them all explicitly in a call to floatForCurrentSizeClass:

    - -
    -
    -

    Deprecated. -Similar to extrapolatedFloatForCurrentSizeClass:, but allows to override values for certain size classes -in the exceptions paramater.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (CGFloat)extrapolatedFloatForCurrentSizeClass:
    -               (nonnull NSDictionary<NSString *, NSNumber *> *)sizeClassToValue
    -                                         except:
    -                                             (nonnull NSDictionary *)exceptions;
    - -
    -
    -

    Swift

    -
    func extrapolatedFloat(forCurrentSizeClass sizeClassToValue: [String : NSNumber], except exceptions: [AnyHashable : Any]) -> CGFloat
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - widthBasedConverter - -
    -
    -
    -
    -
    -
    -

    Converts dimensions given for one size class into dimensions suitable for the current size class -based on the ratio of screen widths associated with the current and source size classes.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) id<MMMStylesheetConverter> _Nonnull widthBasedConverter;
    - -
    -
    -

    Swift

    -
    var widthBasedConverter: MMMStylesheetConverter { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A standard set of paddings. -The actual stylesheet should override all these or at least the normalPadding. -They are defined here so insetsFromRelativeInsets can be defined here as well. -In case only normalPadding is overriden then the rest will be calculated based on it using sqrt(2) as a multiplier, -so every second padding is exactly 2x larger.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) CGFloat extraExtraSmallPadding;
    - -
    -
    -

    Swift

    -
    var extraExtraSmallPadding: CGFloat { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - extraSmallPadding - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) CGFloat extraSmallPadding
    - -
    -
    -

    Swift

    -
    var extraSmallPadding: CGFloat { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - smallPadding - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) CGFloat smallPadding
    - -
    -
    -

    Swift

    -
    var smallPadding: CGFloat { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - normalPadding - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) CGFloat normalPadding
    - -
    -
    -

    Swift

    -
    var normalPadding: CGFloat { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - largePadding - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) CGFloat largePadding
    - -
    -
    -

    Swift

    -
    var largePadding: CGFloat { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - extraLargePadding - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) CGFloat extraLargePadding
    - -
    -
    -

    Swift

    -
    var extraLargePadding: CGFloat { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Actual insets from relative ones.

    - -

    Each offset in relative insets is a fixed number corresponding to the actual paddings defined above:

    - -
      -
    • .125 - extraExtraSmallPadding
    • -
    • .25 — extraSmallPadding
    • -
    • .5 — smallPadding
    • -
    • 1 — normalPadding
    • -
    • 2 — largePadding
    • -
    • 4 — extraLargePadding
    • -
    - -

    Note that the large padding is not necessarily 2x larger than the normal one, etc (by default the extra large is), - but we intentionally use them here like this to allow more compact notation for insets which is easy to remember and - easy to tweak. Compare, for example:

    - -

    \code - UIEdgeInsetsMake([MHStylesheet shared].normalPadding, [MHStylesheet shared].largePadding, [MHStylesheet shared].normalPadding, [MHStylesheet shared].largePadding) - \endcode

    - -

    and the equivalent:

    - -

    \code - [[MHStylesheet shared] insetsFromRelativeInsets:UIEdgeInsetsMake(1, 2, 1, 2)] - \endcode

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (UIEdgeInsets)insetsFromRelativeInsets:(UIEdgeInsets)insets;
    - -
    -
    -

    Swift

    -
    func insets(fromRelativeInsets insets: UIEdgeInsets) -> UIEdgeInsets
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    This is what insetsFromRelativeInsets: is using internally. Might be useful when making similar methods.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (CGFloat)paddingFromRelativePadding:(CGFloat)padding;
    - -
    -
    -

    Swift

    -
    func padding(fromRelativePadding padding: CGFloat) -> CGFloat
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A metrics dictionary that can be used with Auto Layout with keys/values corresponding to all the paddings we support, -e.g. “extraSmallPadding”, etc.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull NSDictionary<NSString *, NSNumber *> *)dictionaryWithPaddings;
    - -
    -
    -

    Swift

    -
    func dictionaryWithPaddings() -> [String : NSNumber]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A dictionary with 4 values under keys “Top”, “Bottom”, “Left”, “Right” -corresponding to the insets obtained from the provided relative ones via insetsFromRelativeInsets:. -(A shortcut composing insetsFromRelativeInsets method with MMMDictinaryFromUIEdgeInsets().)

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull NSDictionary<NSString *, NSNumber *> *)
    -    dictionaryFromRelativeInsets:(UIEdgeInsets)insets
    -                       keyPrefix:(nonnull NSString *)keyPrefix;
    - -
    -
    -

    Swift

    -
    func dictionary(fromRelativeInsets insets: UIEdgeInsets, keyPrefix: String) -> [String : NSNumber]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A dictionary with 4 values obtained from the insets returned by insetsFromRelativeInsets:insets -under the keys “paddingTop”, “paddingBottom”, “paddingLeft”, “paddingRight”, -i.e. it’s a shortcut for dictionaryFromRelativeInsets:insets keyPrefix:@"padding".

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull NSDictionary<NSString *, NSNumber *> *)
    -    paddingDictionaryFromRelativeInsets:(UIEdgeInsets)insets;
    - -
    -
    -

    Swift

    -
    func paddingDictionary(fromRelativeInsets insets: UIEdgeInsets) -> [String : NSNumber]
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMStylesheetScaleConverter.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMStylesheetScaleConverter.html deleted file mode 100644 index b5c68a4..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMStylesheetScaleConverter.html +++ /dev/null @@ -1,436 +0,0 @@ - - - - MMMStylesheetScaleConverter Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMStylesheetScaleConverter

-
-
-

Objective-C

-
@interface MMMStylesheetScaleConverter : NSObject <MMMStylesheetConverter>
- -
-
-

Swift

-
class MMMStylesheetScaleConverter : NSObject, MMMStylesheetConverter
- -
-
-

Dimension converter that uses a table of scales.

- -
-
- -
-
-
-
    -
  • -
    - - - - -initWithScales: - -
    -
    -
    -
    -
    -
    -

    Initializes the converter with an explicit table of scales. -Every value coming to convertFloat:fromSizeClass: will be returned multiplied by scales[sourceSizeClass].

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)initWithScales:
    -    (nonnull NSDictionary<NSString *, NSNumber *> *)scales;
    - -
    -
    -

    Swift

    -
    init(scales: [String : NSNumber])
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Initializes the converter with a target size class and a table of dimensions associated with every size class - (e.g screen width).

    - -

    Every value coming to convertFloat:fromSizeClass: will be returned adjusted proportionally to the ratio of the - dimensions associated with target and source size classes, i.e. it will be multiplied by - scales[targetSizeClass] / scales[sourceSizeClass].

    - -

    So for a table of screen widths the converter will upscale or downscale dimensions between size classes - proprtionally to the ratios of screen width associated with size classes.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)initWithTargetSizeClass:(nonnull NSString *)targetSizeClass
    -                           dimensions:
    -                               (nonnull NSDictionary<NSString *, NSNumber *> *)
    -                                   dimensions;
    - -
    -
    -

    Swift

    -
    convenience init(targetSizeClass: String, dimensions: [String : NSNumber])
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)init NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMTableView.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMTableView.html deleted file mode 100644 index 97e659c..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMTableView.html +++ /dev/null @@ -1,551 +0,0 @@ - - - - MMMTableView Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMTableView

-
-
-

Objective-C

-
@interface MMMTableView : UITableView <MMMPreferredSizeChanges>
- -
-
-

Swift

-
class MMMTableView : UITableView, MMMPreferredSizeChanges
- -
-
-

A table view supporting top and bottom shadows.

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)initWithSettings:(nonnull MMMScrollViewShadowsSettings *)settings
    -                         style:(UITableViewStyle)style;
    - -
    -
    -

    Swift

    -
    init(settings: MMMScrollViewShadowsSettings, style: UITableView.Style)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithSettings: - -
    -
    -
    -
    -
    -
    -

    Note that UITableViewStylePlain is used.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)initWithSettings:(nonnull MMMScrollViewShadowsSettings *)settings;
    - -
    -
    -

    Swift

    -
    init(settings: MMMScrollViewShadowsSettings)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithFrame:style: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (instancetype)initWithFrame:(CGRect)frame style:(UITableViewStyle)style NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithCoder: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (instancetype)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithFrame: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (instancetype)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (instancetype)init NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    When enabled, then reloadData is automatically called whenever any of the cells report potential size -changes via mmm_setPreferredSizeCouldChange. See MMMPreferredSizeChanges for more info.

    - -

    This feature is disabled by default for compatibility with the current code.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic) BOOL shouldHandlePotentialCellSizeChanges;
    - -
    -
    -

    Swift

    -
    var shouldHandlePotentialCellSizeChanges: Bool { get set }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMTableViewCell.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMTableViewCell.html deleted file mode 100644 index 5dfcdaa..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMTableViewCell.html +++ /dev/null @@ -1,485 +0,0 @@ - - - - MMMTableViewCell Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMTableViewCell

-
-
-

Objective-C

-
@interface MMMTableViewCell : UITableViewCell
- -
-
-

Swift

-
class MMMTableViewCell : UITableViewCell
- -
-
-

A base for table view cells redeclareing the designated initializer into the one we typically use, -so subclasses do not have to.

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithReuseIdentifier:(NSString *)reuseIdentifier NS_DESIGNATED_INITIALIZER;
    - -
    -
    -

    Swift

    -
    init!(reuseIdentifier: String!)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithCoder: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithFrame: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)init NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMVelocityMeter.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMVelocityMeter.html deleted file mode 100644 index 3eb3d24..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMVelocityMeter.html +++ /dev/null @@ -1,458 +0,0 @@ - - - - MMMVelocityMeter Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMVelocityMeter

-
-
-

Objective-C

-
@interface MMMVelocityMeter : NSObject
- -
-
-

Swift

-
class MMMVelocityMeter : NSObject
- -
-
-

A little helper for velocity/acceleration calculations: you feed it values with timestamps and can get the most recent -acceleration/velocity values.

- -
-
- -
-
-
-
    -
  • -
    - - - - -reset - -
    -
    -
    -
    -
    -
    -

    Resets the state of the meter, all values added before are forgotten.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)reset;
    - -
    -
    -

    Swift

    -
    func reset()
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -addValue:timestamp: - -
    -
    -
    -
    -
    -
    -

    Adds a coordinate and a corresponding timestamp.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)addValue:(CGFloat)value timestamp:(NSTimeInterval)timestamp;
    - -
    -
    -

    Swift

    -
    func addValue(_ value: CGFloat, timestamp: TimeInterval)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -addValue: - -
    -
    -
    -
    -
    -
    -

    Adds a coordinate with the current timstamp.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)addValue:(CGFloat)value;
    - -
    -
    -

    Swift

    -
    func addValue(_ value: CGFloat)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Calculates velocity and acceleration based on recently added values.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)calculateVelocity:(nonnull CGFloat *)velocity
    -             acceleration:(nonnull CGFloat *)acceleration;
    - -
    -
    -

    Swift

    -
    func calculateVelocity(_ velocity: UnsafeMutablePointer<CGFloat>, acceleration: UnsafeMutablePointer<CGFloat>)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMVerticalGradientView.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMVerticalGradientView.html deleted file mode 100644 index e00a1b6..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMVerticalGradientView.html +++ /dev/null @@ -1,486 +0,0 @@ - - - - MMMVerticalGradientView Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMVerticalGradientView

-
-
-

Objective-C

-
@interface MMMVerticalGradientView : UIView
- -
-
-

Swift

-
class MMMVerticalGradientView : UIView
- -
-
-

A view displaying a gradient from top to bottom. The linearity of the gradient can be controlled. -Can be handy for shadow overlays, etc.

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)initWithTopColor:(UIColor *)topColor bottomColor:(UIColor *)bottomColor curve:(MMMAnimationCurve)curve NS_DESIGNATED_INITIALIZER;
    - -
    -
    -

    Swift

    -
    init(topColor: UIColor, bottomColor: UIColor, curve: MMMAnimationCurve)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (nonnull id)initWithTopColor:(UIColor *)topColor bottomColor:(UIColor *)bottomColor;
    - -
    -
    -

    Swift

    -
    convenience init(topColor: UIColor, bottomColor: UIColor)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)init NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithCoder: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithFrame: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMVerticalStackContainer.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMVerticalStackContainer.html deleted file mode 100644 index 840ad88..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMVerticalStackContainer.html +++ /dev/null @@ -1,396 +0,0 @@ - - - - MMMVerticalStackContainer Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMVerticalStackContainer

-
-
-

Objective-C

-
@interface MMMVerticalStackContainer : MMMStackContainer
- -
-
-

Swift

-
class MMMVerticalStackContainer : MMMStackContainer
- -
-
-

Vertical version of MMMStackContainer.

- -
-
- -
-
-
- -
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMViewWrappingCell.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMViewWrappingCell.html deleted file mode 100644 index 39ef19a..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMViewWrappingCell.html +++ /dev/null @@ -1,460 +0,0 @@ - - - - MMMViewWrappingCell Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMViewWrappingCell

-
-
-

Objective-C

-
@interface MMMViewWrappingCell<ViewType> : MMMTableViewCell
- -
-
-

Swift

-
class MMMViewWrappingCell<ViewType> : MMMTableViewCell where ViewType : AnyObject
- -
-
-

A simple table view cell wrapping the given view.

- -

This is handy when you have a view already and just want to show it as one more cell.

- -

The view being wrapped should support Auto Layout and inflate its height properly. The cell has its selectionStyle - set to UITableViewCellSelectionStyleNone as these kind of cells typically do not appear selected.

- -
-
- -
-
-
-
    -
  • -
    - - - - wrappedView - -
    -
    -
    -
    -
    -
    -

    The view this cell wraps. It is added into the contentView and is laid out to fully fill it.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @property (nonatomic, readonly) ViewType _Nonnull wrappedView;
    - -
    -
    -

    Swift

    -
    var wrappedView: ViewType { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithView:(ViewType)view reuseIdentifier:(NSString *)reuseIdentifier;
    - -
    -
    -

    Swift

    -
    init(view: ViewType, reuseIdentifier: String)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithView:(ViewType)view reuseIdentifier:(NSString *)reuseIdentifier inset:(UIEdgeInsets)inset;
    - -
    -
    -

    Swift

    -
    init(view: ViewType, reuseIdentifier: String, inset: UIEdgeInsets)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (id)initWithReuseIdentifier:(NSString *)reuseIdentifier NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMWebView.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMWebView.html deleted file mode 100644 index f04de84..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Classes/MMMWebView.html +++ /dev/null @@ -1,516 +0,0 @@ - - - - MMMWebView Class Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMWebView

-
-
-

Objective-C

-
@interface MMMWebView : WKWebView
- -
-
-

Swift

-
class MMMWebView : WKWebView
- -
-
-

Web view supporting top & bottom shadows.

- -
-
- -
-
-
-
    -
  • -
    - - - - -initWithSettings: - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (instancetype)initWithSettings:(MMMScrollViewShadowsSettings *)settings;
    - -
    -
    -

    Swift

    -
    convenience init(settings: MMMScrollViewShadowsSettings)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (instancetype)initWithSettings:(MMMScrollViewShadowsSettings *)settings configuration:(WKWebViewConfiguration *)configuration NS_DESIGNATED_INITIALIZER;
    - -
    -
    -

    Swift

    -
    init(settings: MMMScrollViewShadowsSettings, configuration: WKWebViewConfiguration)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithCoder: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (instancetype)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -initWithFrame: - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (instancetype)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (instancetype)initWithFrame:(CGRect)frame configuration:(WKWebViewConfiguration *)configuration NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -init - -
    -
    -
    -
    -
    -
    -

    Unavailable

    - -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (instancetype)init NS_UNAVAILABLE;
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Constants.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Constants.html deleted file mode 100644 index 615bd32..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Constants.html +++ /dev/null @@ -1,540 +0,0 @@ - - - - Constants Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

Constants

-

The following constants are available globally.

- -
-
- -
-
-
-
    -
  • -
    - - - - MMMGolden - -
    -
    -
    -
    -
    -
    -

    Golden ratio constant.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    extern const CGFloat MMMGolden
    - -
    -
    -

    Swift

    -
    class let golden: CGFloat
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMInverseGolden - -
    -
    -
    -
    -
    -
    -

    1 divided by golden ratio.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    extern const CGFloat MMMInverseGolden
    - -
    -
    -

    Swift

    -
    class let inverseGolden: CGFloat
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMSizeClassic - -
    -
    -
    -
    -
    -
    -

    Small screen phones: iPhone 4/4s/5/5s/SE.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    extern NSString *const _Nonnull MMMSizeClassic
    - -
    -
    -

    Swift

    -
    let MMMSizeClassic: String
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMSize6 - -
    -
    -
    -
    -
    -
    -

    Regular phones: iPhone 6/6s/7/8 and X as well.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    extern NSString *const _Nonnull MMMSize6
    - -
    -
    -

    Swift

    -
    let MMMSize6: String
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMSize6Plus - -
    -
    -
    -
    -
    -
    -

    Pluse-sized phones: iPhone 6/7/8 Plus.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    extern NSString *const _Nonnull MMMSize6Plus
    - -
    -
    -

    Swift

    -
    let MMMSize6Plus: String
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMSizePad - -
    -
    -
    -
    -
    -
    -

    iPads: regular and pros.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    extern NSString *const _Nonnull MMMSizePad
    - -
    -
    -

    Swift

    -
    let MMMSizePad: String
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMSizeRest - -
    -
    -
    -
    -
    -
    -

    Not the actual size class, but can be used as a key valueForCurrentSizeClass: and related methods for a fallback value.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    extern NSString *const _Nonnull MMMSizeRest
    - -
    -
    -

    Swift

    -
    let MMMSizeRest: String
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Enums.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Enums.html deleted file mode 100644 index 826ef99..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Enums.html +++ /dev/null @@ -1,565 +0,0 @@ - - - - Enumerations Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

Enumerations

-

The following enumerations are available globally.

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    NS_ENUM(NSInteger, MMMScrollViewShadowAlignment) {
    -	MMMScrollViewShadowAlignmentTop,
    -	MMMScrollViewShadowAlignmentBottom
    -}
    - -
    -
    -

    Swift

    -
    enum MMMScrollViewShadowAlignment : Int, @unchecked Sendable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMAnimationCurve - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    NS_ENUM(NSInteger, MMMAnimationCurve) {
    -
    -	MMMAnimationCurveLinear,
    -	MMMAnimationCurveEaseOut,
    -	MMMAnimationCurveEaseIn,
    -	MMMAnimationCurveEaseInOut,
    -
    -	// "Softer" versions are closer to the linear curve.
    -	MMMAnimationCurveSofterEaseIn,
    -	MMMAnimationCurveSofterEaseOut,
    -	MMMAnimationCurveSofterEaseInOut,
    -	
    -	// Quad animations (e.g. https://easings.net/#easeInQuad)
    -	MMMAnimationCurveEaseInQuad,
    -	MMMAnimationCurveEaseOutQuad,
    -	MMMAnimationCurveEaseInOutQuad,
    -	
    -	// Cubic animations (e.g. https://easings.net/#easeInCubic)
    -	MMMAnimationCurveEaseInCubic,
    -	MMMAnimationCurveEaseOutCubic,
    -	MMMAnimationCurveEaseInOutCubic,
    -	
    -	// Quart animations (e.g. https://easings.net/#easeInQuart)
    -	MMMAnimationCurveEaseInQuart,
    -	MMMAnimationCurveEaseOutQuart,
    -	MMMAnimationCurveEaseInOutQuart,
    -	
    -	// Quint animations (e.g. https://easings.net/#easeInQuint)
    -	MMMAnimationCurveEaseInQuint,
    -	MMMAnimationCurveEaseOutQuint,
    -	MMMAnimationCurveEaseInOutQuint
    -}
    - -
    -
    -

    Swift

    -
    enum MMMAnimationCurve : Int, @unchecked Sendable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMLayoutAlignment - -
    -
    -
    -
    -
    -
    -

    General alignment flags used when it’s not important which direction (vertical or horizontal) the alignment is for.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    enum MMMLayoutAlignment : NSInteger {}
    - -
    -
    -

    Swift

    -
    enum MMMLayoutAlignment : Int, @unchecked Sendable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMLayoutDirection - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    NS_ENUM(NSInteger, MMMLayoutDirection) {
    -	MMMLayoutDirectionHorizontal,
    -	MMMLayoutDirectionVertical
    -}
    - -
    -
    -

    Swift

    -
    enum MMMLayoutDirection : Int, @unchecked Sendable
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    NS_ENUM(NSInteger, MMMLayoutHorizontalAlignment) {
    -	MMMLayoutHorizontalAlignmentNone = MMMLayoutAlignmentNone,
    -	MMMLayoutHorizontalAlignmentLeft = MMMLayoutAlignmentLeading,
    -	MMMLayoutHorizontalAlignmentGolden = MMMLayoutAlignmentGolden,
    -	MMMLayoutHorizontalAlignmentCenter = MMMLayoutAlignmentCenter,
    -	MMMLayoutHorizontalAlignmentRight = MMMLayoutAlignmentTrailing,
    -	MMMLayoutHorizontalAlignmentFill = MMMLayoutAlignmentFill
    -}
    - -
    -
    -

    Swift

    -
    enum MMMLayoutHorizontalAlignment : Int, @unchecked Sendable
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    NS_ENUM(NSInteger, MMMLayoutVerticalAlignment) {
    -	MMMLayoutVerticalAlignmentNone = MMMLayoutAlignmentNone,
    -	MMMLayoutVerticalAlignmentTop = MMMLayoutAlignmentLeading,
    -	MMMLayoutVerticalAlignmentGolden = MMMLayoutAlignmentGolden,
    -	MMMLayoutVerticalAlignmentCenter = MMMLayoutAlignmentCenter,
    -	MMMLayoutVerticalAlignmentBottom = MMMLayoutAlignmentTrailing,
    -	MMMLayoutVerticalAlignmentFill = MMMLayoutAlignmentFill
    -}
    - -
    -
    -

    Swift

    -
    enum MMMLayoutVerticalAlignment : Int, @unchecked Sendable
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Enums/MMMAnimationCurve.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Enums/MMMAnimationCurve.html deleted file mode 100644 index f1bdafa..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Enums/MMMAnimationCurve.html +++ /dev/null @@ -1,967 +0,0 @@ - - - - MMMAnimationCurve Enumeration Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMAnimationCurve

-
-
-

Objective-C

-
NS_ENUM(NSInteger, MMMAnimationCurve) {
-
-	MMMAnimationCurveLinear,
-	MMMAnimationCurveEaseOut,
-	MMMAnimationCurveEaseIn,
-	MMMAnimationCurveEaseInOut,
-
-	// "Softer" versions are closer to the linear curve.
-	MMMAnimationCurveSofterEaseIn,
-	MMMAnimationCurveSofterEaseOut,
-	MMMAnimationCurveSofterEaseInOut,
-	
-	// Quad animations (e.g. https://easings.net/#easeInQuad)
-	MMMAnimationCurveEaseInQuad,
-	MMMAnimationCurveEaseOutQuad,
-	MMMAnimationCurveEaseInOutQuad,
-	
-	// Cubic animations (e.g. https://easings.net/#easeInCubic)
-	MMMAnimationCurveEaseInCubic,
-	MMMAnimationCurveEaseOutCubic,
-	MMMAnimationCurveEaseInOutCubic,
-	
-	// Quart animations (e.g. https://easings.net/#easeInQuart)
-	MMMAnimationCurveEaseInQuart,
-	MMMAnimationCurveEaseOutQuart,
-	MMMAnimationCurveEaseInOutQuart,
-	
-	// Quint animations (e.g. https://easings.net/#easeInQuint)
-	MMMAnimationCurveEaseInQuint,
-	MMMAnimationCurveEaseOutQuint,
-	MMMAnimationCurveEaseInOutQuint
-}
- -
-
-

Swift

-
enum MMMAnimationCurve : Int, @unchecked Sendable
- -
-
-

Undocumented

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveLinear
    - -
    -
    -

    Swift

    -
    case linear = 0
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveEaseOut
    - -
    -
    -

    Swift

    -
    case easeOut = 1
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveEaseIn
    - -
    -
    -

    Swift

    -
    case easeIn = 2
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveEaseInOut
    - -
    -
    -

    Swift

    -
    case easeInOut = 3
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveSofterEaseIn
    - -
    -
    -

    Swift

    -
    case softerEaseIn = 4
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveSofterEaseOut
    - -
    -
    -

    Swift

    -
    case softerEaseOut = 5
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveSofterEaseInOut
    - -
    -
    -

    Swift

    -
    case softerEaseInOut = 6
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveEaseInQuad
    - -
    -
    -

    Swift

    -
    case easeInQuad = 7
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveEaseOutQuad
    - -
    -
    -

    Swift

    -
    case easeOutQuad = 8
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveEaseInOutQuad
    - -
    -
    -

    Swift

    -
    case easeInOutQuad = 9
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveEaseInCubic
    - -
    -
    -

    Swift

    -
    case easeInCubic = 10
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveEaseOutCubic
    - -
    -
    -

    Swift

    -
    case easeOutCubic = 11
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveEaseInOutCubic
    - -
    -
    -

    Swift

    -
    case easeInOutCubic = 12
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveEaseInQuart
    - -
    -
    -

    Swift

    -
    case easeInQuart = 13
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveEaseOutQuart
    - -
    -
    -

    Swift

    -
    case easeOutQuart = 14
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveEaseInOutQuart
    - -
    -
    -

    Swift

    -
    case easeInOutQuart = 15
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveEaseInQuint
    - -
    -
    -

    Swift

    -
    case easeInQuint = 16
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveEaseOutQuint
    - -
    -
    -

    Swift

    -
    case easeOutQuint = 17
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMAnimationCurveEaseInOutQuint
    - -
    -
    -

    Swift

    -
    case easeInOutQuint = 18
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Enums/MMMLayoutAlignment.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Enums/MMMLayoutAlignment.html deleted file mode 100644 index 68a7fb1..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Enums/MMMLayoutAlignment.html +++ /dev/null @@ -1,520 +0,0 @@ - - - - MMMLayoutAlignment Enumeration Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMLayoutAlignment

-
-
-

Objective-C

-
enum MMMLayoutAlignment : NSInteger {}
- -
-
-

Swift

-
enum MMMLayoutAlignment : Int, @unchecked Sendable
- -
-
-

General alignment flags used when it’s not important which direction (vertical or horizontal) the alignment is for.

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutAlignmentNone
    - -
    -
    -

    Swift

    -
    case none = 0
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutAlignmentLeading
    - -
    -
    -

    Swift

    -
    case leading = 1
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutAlignmentGolden
    - -
    -
    -

    Swift

    -
    case golden = 2
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutAlignmentCenter
    - -
    -
    -

    Swift

    -
    case center = 3
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutAlignmentTrailing
    - -
    -
    -

    Swift

    -
    case trailing = 4
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutAlignmentFill
    - -
    -
    -

    Swift

    -
    case fill = 5
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Enums/MMMLayoutDirection.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Enums/MMMLayoutDirection.html deleted file mode 100644 index 8ef8f78..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Enums/MMMLayoutDirection.html +++ /dev/null @@ -1,395 +0,0 @@ - - - - MMMLayoutDirection Enumeration Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMLayoutDirection

-
-
-

Objective-C

-
NS_ENUM(NSInteger, MMMLayoutDirection) {
-	MMMLayoutDirectionHorizontal,
-	MMMLayoutDirectionVertical
-}
- -
-
-

Swift

-
enum MMMLayoutDirection : Int, @unchecked Sendable
- -
-
-

Undocumented

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutDirectionHorizontal
    - -
    -
    -

    Swift

    -
    case horizontal = 0
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutDirectionVertical
    - -
    -
    -

    Swift

    -
    case vertical = 1
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Enums/MMMLayoutHorizontalAlignment.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Enums/MMMLayoutHorizontalAlignment.html deleted file mode 100644 index bf708f0..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Enums/MMMLayoutHorizontalAlignment.html +++ /dev/null @@ -1,527 +0,0 @@ - - - - MMMLayoutHorizontalAlignment Enumeration Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMLayoutHorizontalAlignment

-
-
-

Objective-C

-
NS_ENUM(NSInteger, MMMLayoutHorizontalAlignment) {
-	MMMLayoutHorizontalAlignmentNone = MMMLayoutAlignmentNone,
-	MMMLayoutHorizontalAlignmentLeft = MMMLayoutAlignmentLeading,
-	MMMLayoutHorizontalAlignmentGolden = MMMLayoutAlignmentGolden,
-	MMMLayoutHorizontalAlignmentCenter = MMMLayoutAlignmentCenter,
-	MMMLayoutHorizontalAlignmentRight = MMMLayoutAlignmentTrailing,
-	MMMLayoutHorizontalAlignmentFill = MMMLayoutAlignmentFill
-}
- -
-
-

Swift

-
enum MMMLayoutHorizontalAlignment : Int, @unchecked Sendable
- -
-
-

Undocumented

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutHorizontalAlignmentNone = MMMLayoutAlignmentNone
    - -
    -
    -

    Swift

    -
    case none = 0
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutHorizontalAlignmentLeft = MMMLayoutAlignmentLeading
    - -
    -
    -

    Swift

    -
    case left = 1
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutHorizontalAlignmentGolden = MMMLayoutAlignmentGolden
    - -
    -
    -

    Swift

    -
    case golden = 2
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutHorizontalAlignmentCenter = MMMLayoutAlignmentCenter
    - -
    -
    -

    Swift

    -
    case center = 3
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutHorizontalAlignmentRight = MMMLayoutAlignmentTrailing
    - -
    -
    -

    Swift

    -
    case right = 4
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutHorizontalAlignmentFill = MMMLayoutAlignmentFill
    - -
    -
    -

    Swift

    -
    case fill = 5
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Enums/MMMLayoutVerticalAlignment.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Enums/MMMLayoutVerticalAlignment.html deleted file mode 100644 index f95b9aa..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Enums/MMMLayoutVerticalAlignment.html +++ /dev/null @@ -1,527 +0,0 @@ - - - - MMMLayoutVerticalAlignment Enumeration Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMLayoutVerticalAlignment

-
-
-

Objective-C

-
NS_ENUM(NSInteger, MMMLayoutVerticalAlignment) {
-	MMMLayoutVerticalAlignmentNone = MMMLayoutAlignmentNone,
-	MMMLayoutVerticalAlignmentTop = MMMLayoutAlignmentLeading,
-	MMMLayoutVerticalAlignmentGolden = MMMLayoutAlignmentGolden,
-	MMMLayoutVerticalAlignmentCenter = MMMLayoutAlignmentCenter,
-	MMMLayoutVerticalAlignmentBottom = MMMLayoutAlignmentTrailing,
-	MMMLayoutVerticalAlignmentFill = MMMLayoutAlignmentFill
-}
- -
-
-

Swift

-
enum MMMLayoutVerticalAlignment : Int, @unchecked Sendable
- -
-
-

Undocumented

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutVerticalAlignmentNone = MMMLayoutAlignmentNone
    - -
    -
    -

    Swift

    -
    case none = 0
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutVerticalAlignmentTop = MMMLayoutAlignmentLeading
    - -
    -
    -

    Swift

    -
    case top = 1
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutVerticalAlignmentGolden = MMMLayoutAlignmentGolden
    - -
    -
    -

    Swift

    -
    case golden = 2
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutVerticalAlignmentCenter = MMMLayoutAlignmentCenter
    - -
    -
    -

    Swift

    -
    case center = 3
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutVerticalAlignmentBottom = MMMLayoutAlignmentTrailing
    - -
    -
    -

    Swift

    -
    case bottom = 4
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMLayoutVerticalAlignmentFill = MMMLayoutAlignmentFill
    - -
    -
    -

    Swift

    -
    case fill = 5
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Enums/MMMScrollViewShadowAlignment.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Enums/MMMScrollViewShadowAlignment.html deleted file mode 100644 index 83c0e84..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Enums/MMMScrollViewShadowAlignment.html +++ /dev/null @@ -1,395 +0,0 @@ - - - - MMMScrollViewShadowAlignment Enumeration Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMScrollViewShadowAlignment

-
-
-

Objective-C

-
NS_ENUM(NSInteger, MMMScrollViewShadowAlignment) {
-	MMMScrollViewShadowAlignmentTop,
-	MMMScrollViewShadowAlignmentBottom
-}
- -
-
-

Swift

-
enum MMMScrollViewShadowAlignment : Int, @unchecked Sendable
- -
-
-

Undocumented

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMScrollViewShadowAlignmentTop
    - -
    -
    -

    Swift

    -
    case top = 0
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    MMMScrollViewShadowAlignmentBottom
    - -
    -
    -

    Swift

    -
    case bottom = 1
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Functions.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Functions.html deleted file mode 100644 index cd71d63..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Functions.html +++ /dev/null @@ -1,527 +0,0 @@ - - - - Functions Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

Functions

-

The following functions are available globally.

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Suppose you need to contrain a view so its center divides its container in certain ratio different from 1:1 - (e.g. golden section):

    - -

    ┌─────────┐ ◆ - │ │ │ - │ │ │ a - │┌───────┐│ │ - ─│┼ ─ ─ ─ ┼│─◆ ratio = a / b - │└───────┘│ │ - │ │ │ - │ │ │ - │ │ │ b - │ │ │ - │ │ │ - │ │ │ - └─────────┘ ◆

    - -

    You cannot put this ratio directly into the multiplier parameter of the corresponding NSLayoutConstraints relating - the centers of the views, because the multiplier would be the ratio between the distance to the center - of the view (h) and the distance to the center of the container (H) instead:

    - -

    ◆ ┌─────────┐ ◆ - │ │ │ │ - │ │ │ │ a = h - H │ │┌───────┐│ │ - │ │├ ─ ─ ─ ┼│─◆ multiplier = h / H - │ │└───────┘│ │ ratio = a / b = h / (2 * H - h) - ◆─│─ ─ ─ ─ ─│ │ - │ │ │ - │ │ │ b = 2 * H - h - │ │ │ - │ │ │ - │ │ │ - └─────────┘ ◆

    - -

    I.e. the multiplier is h / H (assuming the view is the first in the definition of the constraint), - but the ratio we are interested would be h / (2 * H - h) if expressed in the distances to centers.

    - -

    If you have a desired ratio and want to get a multiplier, which when applied, results in the layout dividing - the container in this ratio, then you can use this function as shortcut.

    - -

    Detailed calculations: - ratio = h / (2 * H - h) ==> 2 * H * ratio - h * ratio = h ==> 2 * H * ratio / h - ratio = 1 - ==> 1 + ratio = 2 * H * ratio / h ==> (1 + ratio) / (2 * ratio) = H / h - where H / h is the inverse of our multiplier, so the actual multiplier is (2 * ratio) / (1 + ratio).

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    static inline CGFloat MMMCenterMultiplierForRatio(CGFloat ratio)
    - -
    -
    -

    Swift

    -
    class func centerMultiplier(forRatio ratio: CGFloat) -> CGFloat
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Animation curve opposite to the given one, e.g. EaseIn for EaseOut.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    extern MMMAnimationCurve MMMReverseAnimationCurve(MMMAnimationCurve curve)
    - -
    -
    -

    Swift

    -
    func MMMReverseAnimationCurve(_ curve: MMMAnimationCurve) -> MMMAnimationCurve
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    static inline MMMLayoutAlignment MMMLayoutAlignmentFromHorizontalAlignment(MMMLayoutHorizontalAlignment alignment) {
    -	return (MMMLayoutAlignment)alignment;
    -}
    - -
    -
    -

    Swift

    -
    func MMMLayoutAlignmentFromHorizontalAlignment(_ alignment: MMMLayoutHorizontalAlignment) -> MMMLayoutAlignment
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    static inline MMMLayoutAlignment MMMLayoutAlignmentFromVerticalAlignment(MMMLayoutVerticalAlignment alignment) {
    -	return (MMMLayoutAlignment)alignment;
    -}
    - -
    -
    -

    Swift

    -
    func MMMLayoutAlignmentFromVerticalAlignment(_ alignment: MMMLayoutVerticalAlignment) -> MMMLayoutAlignment
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A dictionary built from UIEdgeInsets suitable for AutoLayout metrics. -The dictionary will have 4 values under the keys named “Top”, “Left”, “Bottom”, “Right”.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    extern NSDictionary<NSString *, NSNumber *>
    -    *_Nonnull MMMDictionaryFromUIEdgeInsets(NSString *_Nonnull prefix,
    -                                            UIEdgeInsets insets)
    - -
    -
    -

    Swift

    -
    func MMMDictionaryFromUIEdgeInsets(_ prefix: String, _ insets: UIEdgeInsets) -> [String : NSNumber]
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Protocols.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Protocols.html deleted file mode 100644 index 75ab669..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Protocols.html +++ /dev/null @@ -1,493 +0,0 @@ - - - - Protocols Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

Protocols

-

The following protocols are available globally.

- -
-
- -
-
-
-
    -
  • -
    - - - - MMMNavigationHandler - -
    -
    -
    -
    -
    -
    -

    Protocol for entities able to fulfill in-app navigation requests.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @protocol MMMNavigationHandler <NSObject>
    - -
    -
    -

    Swift

    -
    protocol MMMNavigationHandler : NSObjectProtocol
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    This is the delegate corresponding to each navigation item in the stack. -Its main purpose is to be able to handle popping of the corresponding navigation item.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @protocol MMMNavigationStackItemDelegate <NSObject>
    - -
    -
    -

    Swift

    -
    protocol MMMNavigationStackItemDelegate : NSObjectProtocol
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A token corresponding to a single node (item) of the current UI navigation path. -Note that a reference to the token must be stored somewhere or the corresponding item will be popped right away.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @protocol MMMNavigationStackItem <NSObject>
    - -
    -
    -

    Swift

    -
    protocol MMMNavigationStackItem : NSObjectProtocol
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A view supporting this will be notified when one of the child views indicates potential changes in its contents -that might influence its size via mmm_setPreferredSizeCouldChange.

    - -

    This is handy with views that do not fully rely on Auto Layout, like UITableView, -where a change in the size of a cell would require it to reload this cell.

    - -

    The implementation is responsible for coalescing notification and avoiding notification loops.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @protocol MMMPreferredSizeChanges <NSObject>
    - -
    -
    -

    Swift

    -
    protocol MMMPreferredSizeChanges : NSObjectProtocol
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Something that converts dimensions given for one size class (e.g. font sizes from the design made for iPhone 6) - into dimensions for another size class (e.g. font size for iPhone 5 that were not explicitely mentioned in the design).

    - -

    Different converters can be used for different kinds of values. For example, it might make sense to scale paddings - proportionally to screen widths, but keep font sizes the same.

    - - See more -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    @protocol MMMStylesheetConverter <NSObject>
    - -
    -
    -

    Swift

    -
    protocol MMMStylesheetConverter : NSObjectProtocol
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Protocols/MMMNavigationHandler.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Protocols/MMMNavigationHandler.html deleted file mode 100644 index bee71ec..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Protocols/MMMNavigationHandler.html +++ /dev/null @@ -1,362 +0,0 @@ - - - - MMMNavigationHandler Protocol Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMNavigationHandler

-
-
-

Objective-C

-
@protocol MMMNavigationHandler <NSObject>
- -
-
-

Swift

-
protocol MMMNavigationHandler : NSObjectProtocol
- -
-
-

Protocol for entities able to fulfill in-app navigation requests.

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Returns NO, in case the handler is unable to perform the given request. (Another handler will be tried then.) -Returns YES, if the request has been accepted by the handler. -The handler must call -didFinishSuccessfully: when it’s done performing the request.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (BOOL)performNavigationRequest:(nonnull MMMNavigationRequest *)request;
    - -
    -
    -

    Swift

    -
    func perform(_ request: MMMNavigationRequest) -> Bool
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Protocols/MMMNavigationStackItem.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Protocols/MMMNavigationStackItem.html deleted file mode 100644 index 97c5173..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Protocols/MMMNavigationStackItem.html +++ /dev/null @@ -1,433 +0,0 @@ - - - - MMMNavigationStackItem Protocol Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMNavigationStackItem

-
-
-

Objective-C

-
@protocol MMMNavigationStackItem <NSObject>
- -
-
-

Swift

-
protocol MMMNavigationStackItem : NSObjectProtocol
- -
-
-

A token corresponding to a single node (item) of the current UI navigation path. -Note that a reference to the token must be stored somewhere or the corresponding item will be popped right away.

- -
-
- -
-
-
-
    -
  • -
    - - - - -didPop - -
    -
    -
    -
    -
    -
    -

    Should be called by the item’s delegate when the navigation item has been popped as a result of user’s action -and must be called when MMMNavigationStack calling popNavigationStackItem of the corresponding delegate.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)didPop;
    - -
    -
    -

    Swift

    -
    func didPop()
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - -didFailToPop - -
    -
    -
    -
    -
    -
    -

    Should be called by the navigation item’s delegate in rare caes when the corresponding item cannot be popped.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)didFailToPop;
    - -
    -
    -

    Swift

    -
    func didFailToPop()
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Pops all the items currently on the stack above this item, so this one becomes the top. This is an asynchronous operation - because it might involving several navigation steps.

    - -

    Returns YES, if the request to pop was accepted for execution; NO otherwise. The latter means programmers error (such as - popping while another pop is in progress) and will terminate the app when assertions are enabled.

    - -

    Note that the completion handler is executed only if the request has been accepted.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (BOOL)popAllAfterThisItemWithCompletion:
    -    (nonnull MMMNavigationStackCompletion)completion;
    - -
    -
    -

    Swift

    -
    func popAllAfterThisItem(completion: @escaping MMMNavigationStackCompletion) -> Bool
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Protocols/MMMNavigationStackItemDelegate.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Protocols/MMMNavigationStackItemDelegate.html deleted file mode 100644 index f3cbd5a..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Protocols/MMMNavigationStackItemDelegate.html +++ /dev/null @@ -1,366 +0,0 @@ - - - - MMMNavigationStackItemDelegate Protocol Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMNavigationStackItemDelegate

-
-
-

Objective-C

-
@protocol MMMNavigationStackItemDelegate <NSObject>
- -
-
-

Swift

-
protocol MMMNavigationStackItemDelegate : NSObjectProtocol
- -
-
-

This is the delegate corresponding to each navigation item in the stack. -Its main purpose is to be able to handle popping of the corresponding navigation item.

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Should perform all the work necessary to pop the corresponding UI navigation item and must call didPop method - on the corresponding item when done.

    - -

    Note that when the delegate is asked to pop, then all the items on top of it in the stack have been popped already, - so the delegate should not ask the stack to do it. In fact asking for it and waiting for completion might freeze the popping - process as pop completion callbacks are called only after all the whole popping process completes.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)popNavigationStackItem:(nonnull id<MMMNavigationStackItem>)item;
    - -
    -
    -

    Swift

    -
    func pop(_ item: MMMNavigationStackItem)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Protocols/MMMPreferredSizeChanges.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Protocols/MMMPreferredSizeChanges.html deleted file mode 100644 index 56798ae..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Protocols/MMMPreferredSizeChanges.html +++ /dev/null @@ -1,366 +0,0 @@ - - - - MMMPreferredSizeChanges Protocol Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMPreferredSizeChanges

-
-
-

Objective-C

-
@protocol MMMPreferredSizeChanges <NSObject>
- -
-
-

Swift

-
protocol MMMPreferredSizeChanges : NSObjectProtocol
- -
-
-

A view supporting this will be notified when one of the child views indicates potential changes in its contents -that might influence its size via mmm_setPreferredSizeCouldChange.

- -

This is handy with views that do not fully rely on Auto Layout, like UITableView, -where a change in the size of a cell would require it to reload this cell.

- -

The implementation is responsible for coalescing notification and avoiding notification loops.

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (void)mmm_preferredSizeCouldChangeForSubview:(UIView *)subview;
    - -
    -
    -

    Swift

    -
    func mmm_preferredSizeCouldChange(forSubview subview: UIView)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Protocols/MMMStylesheetConverter.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Protocols/MMMStylesheetConverter.html deleted file mode 100644 index 6fb9014..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Protocols/MMMStylesheetConverter.html +++ /dev/null @@ -1,365 +0,0 @@ - - - - MMMStylesheetConverter Protocol Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

MMMStylesheetConverter

-
-
-

Objective-C

-
@protocol MMMStylesheetConverter <NSObject>
- -
-
-

Swift

-
protocol MMMStylesheetConverter : NSObjectProtocol
- -
-
-

Something that converts dimensions given for one size class (e.g. font sizes from the design made for iPhone 6) - into dimensions for another size class (e.g. font size for iPhone 5 that were not explicitely mentioned in the design).

- -

Different converters can be used for different kinds of values. For example, it might make sense to scale paddings - proportionally to screen widths, but keep font sizes the same.

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Converts a dimension know for certain size class according to the rules of the converter.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    - (CGFloat)convertFloat:(CGFloat)value
    -          fromSizeClass:(nonnull NSString *)sourceSizeClass;
    - -
    -
    -

    Swift

    -
    func convert(_ value: CGFloat, fromSizeClass sourceSizeClass: String) -> CGFloat
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Type Definitions.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Type Definitions.html deleted file mode 100644 index be3dc90..0000000 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/Type Definitions.html +++ /dev/null @@ -1,545 +0,0 @@ - - - - Type Definitions Reference - - - - - - - - - - - - - - - - -
- - - - -

- -

- - GitHub - View on GitHub - -

- -
- - - -
- -
- -
-
-

Type Definitions

-

The following type definitions are available globally.

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    typedef id MMMNavigationRequestId
    - -
    -
    -

    Swift

    -
    typealias MMMNavigationRequestId = AnyObject
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    typedef void (^MMMNavigationCompletionBlock)(MMMNavigationRequestId requestId, BOOL finished)
    - -
    -
    -

    Swift

    -
    typealias MMMNavigationCompletionBlock = (Any, Bool) -> Void
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    typedef id MMMNavigationHandlerId
    - -
    -
    -

    Swift

    -
    typealias MMMNavigationHandlerId = AnyObject
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    typedef void (^MMMNavigationStackCompletion)(BOOL success)
    - -
    -
    -

    Swift

    -
    typealias MMMNavigationStackCompletion = (Bool) -> Void
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    typedef void (^ _Nonnull MMMShadowViewSettingBlock
    - -
    -
    -

    Swift

    -
    typealias MMMShadowViewSettingBlock = (MMMShadowViewSetting) -> Void
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Called on every update cycle of MMMAnimator for the given animation item.

    - -

    The time is always within [0; 1] range here, which will correspond to the the [start; start + duration] interval of - real time clock.

    - -

    Unless the item is cancelled it is guaranteed that the block will be called for 0 and 1 values.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    typedef void (^MMMAnimatorUpdateBlock)(MMMAnimationHandle *_Nonnull, CGFloat)
    - -
    -
    -

    Swift

    -
    typealias MMMAnimatorUpdateBlock = (MMMAnimationHandle, CGFloat) -> Void
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MMMAnimatorDoneBlock - -
    -
    -
    -
    -
    -
    -

    Called when the animation item has been finished.

    - -
    -
    -

    Declaration

    -
    -

    Objective-C

    -
    typedef void (^MMMAnimatorDoneBlock)(MMMAnimationHandle *_Nonnull, BOOL)
    - -
    -
    -

    Swift

    -
    typealias MMMAnimatorDoneBlock = (MMMAnimationHandle, Bool) -> Void
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/index.html b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/index.html index 4399084..ac7c655 100644 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/index.html +++ b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/index.html @@ -42,248 +42,6 @@
@@ -326,7 +84,7 @@

Usage

diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/search.json b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/search.json index ef952be..9e26dfe 100644 --- a/docsets/MMMCommonUI.docset/Contents/Resources/Documents/search.json +++ b/docsets/MMMCommonUI.docset/Contents/Resources/Documents/search.json @@ -1 +1 @@ -{"Functions.html#/c:MMMLayoutUtils.h@F@MMMCenterMultiplierForRatio":{"name":"MMMCenterMultiplierForRatio","abstract":"\u003cp\u003eSuppose you need to contrain a view so its center divides its container in certain ratio different from 1:1"},"Functions.html#/c:@F@MMMReverseAnimationCurve":{"name":"MMMReverseAnimationCurve","abstract":"\u003cp\u003eAnimation curve opposite to the given one, e.g. EaseIn for EaseOut.\u003c/p\u003e"},"Functions.html#/c:MMMLayout.h@F@MMMLayoutAlignmentFromHorizontalAlignment":{"name":"MMMLayoutAlignmentFromHorizontalAlignment","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/c:MMMLayout.h@F@MMMLayoutAlignmentFromVerticalAlignment":{"name":"MMMLayoutAlignmentFromVerticalAlignment","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/c:@F@MMMDictionaryFromUIEdgeInsets":{"name":"MMMDictionaryFromUIEdgeInsets","abstract":"\u003cp\u003eA dictionary built from UIEdgeInsets suitable for AutoLayout metrics."},"Type%20Definitions.html#/c:MMMNavigation.h@T@MMMNavigationRequestId":{"name":"MMMNavigationRequestId","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Type%20Definitions.html#/c:MMMNavigation.h@T@MMMNavigationCompletionBlock":{"name":"MMMNavigationCompletionBlock","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Type%20Definitions.html#/c:MMMNavigation.h@T@MMMNavigationHandlerId":{"name":"MMMNavigationHandlerId","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Type%20Definitions.html#/c:MMMNavigationStack.h@T@MMMNavigationStackCompletion":{"name":"MMMNavigationStackCompletion","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Type%20Definitions.html#/c:MMMShadowView.h@T@MMMShadowViewSettingBlock":{"name":"MMMShadowViewSettingBlock","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Type%20Definitions.html#/c:MMMAnimations.h@T@MMMAnimatorUpdateBlock":{"name":"MMMAnimatorUpdateBlock","abstract":"\u003cp\u003eCalled on every update cycle of MMMAnimator for the given animation item.\u003c/p\u003e"},"Type%20Definitions.html#/c:MMMAnimations.h@T@MMMAnimatorDoneBlock":{"name":"MMMAnimatorDoneBlock","abstract":"\u003cp\u003eCalled when the animation item has been finished.\u003c/p\u003e"},"Protocols/MMMStylesheetConverter.html#/c:objc(pl)MMMStylesheetConverter(im)convertFloat:fromSizeClass:":{"name":"-convertFloat:fromSizeClass:","abstract":"\u003cp\u003eConverts a dimension know for certain size class according to the rules of the converter.\u003c/p\u003e","parent_name":"MMMStylesheetConverter"},"Protocols/MMMPreferredSizeChanges.html#/c:objc(pl)MMMPreferredSizeChanges(im)mmm_preferredSizeCouldChangeForSubview:":{"name":"-mmm_preferredSizeCouldChangeForSubview:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMPreferredSizeChanges"},"Protocols/MMMNavigationStackItem.html#/c:objc(pl)MMMNavigationStackItem(im)didPop":{"name":"-didPop","abstract":"\u003cp\u003eShould be called by the item\u0026rsquo;s delegate when the navigation item has been popped as a result of user\u0026rsquo;s action","parent_name":"MMMNavigationStackItem"},"Protocols/MMMNavigationStackItem.html#/c:objc(pl)MMMNavigationStackItem(im)didFailToPop":{"name":"-didFailToPop","abstract":"\u003cp\u003eShould be called by the navigation item\u0026rsquo;s delegate in rare caes when the corresponding item cannot be popped.\u003c/p\u003e","parent_name":"MMMNavigationStackItem"},"Protocols/MMMNavigationStackItem.html#/c:objc(pl)MMMNavigationStackItem(im)popAllAfterThisItemWithCompletion:":{"name":"-popAllAfterThisItemWithCompletion:","abstract":"\u003cp\u003ePops all the items currently on the stack above this item, so this one becomes the top. This is an asynchronous operation","parent_name":"MMMNavigationStackItem"},"Protocols/MMMNavigationStackItemDelegate.html#/c:objc(pl)MMMNavigationStackItemDelegate(im)popNavigationStackItem:":{"name":"-popNavigationStackItem:","abstract":"\u003cp\u003eShould perform all the work necessary to pop the corresponding UI navigation item and must call \u003ccode\u003edidPop\u003c/code\u003e method","parent_name":"MMMNavigationStackItemDelegate"},"Protocols/MMMNavigationHandler.html#/c:objc(pl)MMMNavigationHandler(im)performNavigationRequest:":{"name":"-performNavigationRequest:","abstract":"\u003cp\u003eReturns NO, in case the handler is unable to perform the given request. (Another handler will be tried then.)","parent_name":"MMMNavigationHandler"},"Protocols/MMMNavigationHandler.html":{"name":"MMMNavigationHandler","abstract":"\u003cp\u003eProtocol for entities able to fulfill in-app navigation requests.\u003c/p\u003e"},"Protocols/MMMNavigationStackItemDelegate.html":{"name":"MMMNavigationStackItemDelegate","abstract":"\u003cp\u003eThis is the delegate corresponding to each navigation item in the stack."},"Protocols/MMMNavigationStackItem.html":{"name":"MMMNavigationStackItem","abstract":"\u003cp\u003eA token corresponding to a single node (item) of the current UI navigation path."},"Protocols/MMMPreferredSizeChanges.html":{"name":"MMMPreferredSizeChanges","abstract":"\u003cp\u003eA view supporting this will be notified when one of the child views indicates potential changes in its contents"},"Protocols/MMMStylesheetConverter.html":{"name":"MMMStylesheetConverter","abstract":"\u003cp\u003eSomething that converts dimensions given for one size class (e.g. font sizes from the design made for iPhone 6)"},"Enums/MMMLayoutVerticalAlignment.html#/c:@E@MMMLayoutVerticalAlignment@MMMLayoutVerticalAlignmentNone":{"name":"MMMLayoutVerticalAlignmentNone","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutVerticalAlignment"},"Enums/MMMLayoutVerticalAlignment.html#/c:@E@MMMLayoutVerticalAlignment@MMMLayoutVerticalAlignmentTop":{"name":"MMMLayoutVerticalAlignmentTop","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutVerticalAlignment"},"Enums/MMMLayoutVerticalAlignment.html#/c:@E@MMMLayoutVerticalAlignment@MMMLayoutVerticalAlignmentGolden":{"name":"MMMLayoutVerticalAlignmentGolden","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutVerticalAlignment"},"Enums/MMMLayoutVerticalAlignment.html#/c:@E@MMMLayoutVerticalAlignment@MMMLayoutVerticalAlignmentCenter":{"name":"MMMLayoutVerticalAlignmentCenter","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutVerticalAlignment"},"Enums/MMMLayoutVerticalAlignment.html#/c:@E@MMMLayoutVerticalAlignment@MMMLayoutVerticalAlignmentBottom":{"name":"MMMLayoutVerticalAlignmentBottom","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutVerticalAlignment"},"Enums/MMMLayoutVerticalAlignment.html#/c:@E@MMMLayoutVerticalAlignment@MMMLayoutVerticalAlignmentFill":{"name":"MMMLayoutVerticalAlignmentFill","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutVerticalAlignment"},"Enums/MMMLayoutHorizontalAlignment.html#/c:@E@MMMLayoutHorizontalAlignment@MMMLayoutHorizontalAlignmentNone":{"name":"MMMLayoutHorizontalAlignmentNone","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutHorizontalAlignment"},"Enums/MMMLayoutHorizontalAlignment.html#/c:@E@MMMLayoutHorizontalAlignment@MMMLayoutHorizontalAlignmentLeft":{"name":"MMMLayoutHorizontalAlignmentLeft","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutHorizontalAlignment"},"Enums/MMMLayoutHorizontalAlignment.html#/c:@E@MMMLayoutHorizontalAlignment@MMMLayoutHorizontalAlignmentGolden":{"name":"MMMLayoutHorizontalAlignmentGolden","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutHorizontalAlignment"},"Enums/MMMLayoutHorizontalAlignment.html#/c:@E@MMMLayoutHorizontalAlignment@MMMLayoutHorizontalAlignmentCenter":{"name":"MMMLayoutHorizontalAlignmentCenter","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutHorizontalAlignment"},"Enums/MMMLayoutHorizontalAlignment.html#/c:@E@MMMLayoutHorizontalAlignment@MMMLayoutHorizontalAlignmentRight":{"name":"MMMLayoutHorizontalAlignmentRight","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutHorizontalAlignment"},"Enums/MMMLayoutHorizontalAlignment.html#/c:@E@MMMLayoutHorizontalAlignment@MMMLayoutHorizontalAlignmentFill":{"name":"MMMLayoutHorizontalAlignmentFill","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutHorizontalAlignment"},"Enums/MMMLayoutDirection.html#/c:@E@MMMLayoutDirection@MMMLayoutDirectionHorizontal":{"name":"MMMLayoutDirectionHorizontal","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutDirection"},"Enums/MMMLayoutDirection.html#/c:@E@MMMLayoutDirection@MMMLayoutDirectionVertical":{"name":"MMMLayoutDirectionVertical","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutDirection"},"Enums/MMMLayoutAlignment.html#/c:@E@MMMLayoutAlignment@MMMLayoutAlignmentNone":{"name":"MMMLayoutAlignmentNone","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutAlignment"},"Enums/MMMLayoutAlignment.html#/c:@E@MMMLayoutAlignment@MMMLayoutAlignmentLeading":{"name":"MMMLayoutAlignmentLeading","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutAlignment"},"Enums/MMMLayoutAlignment.html#/c:@E@MMMLayoutAlignment@MMMLayoutAlignmentGolden":{"name":"MMMLayoutAlignmentGolden","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutAlignment"},"Enums/MMMLayoutAlignment.html#/c:@E@MMMLayoutAlignment@MMMLayoutAlignmentCenter":{"name":"MMMLayoutAlignmentCenter","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutAlignment"},"Enums/MMMLayoutAlignment.html#/c:@E@MMMLayoutAlignment@MMMLayoutAlignmentTrailing":{"name":"MMMLayoutAlignmentTrailing","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutAlignment"},"Enums/MMMLayoutAlignment.html#/c:@E@MMMLayoutAlignment@MMMLayoutAlignmentFill":{"name":"MMMLayoutAlignmentFill","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutAlignment"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveLinear":{"name":"MMMAnimationCurveLinear","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveEaseOut":{"name":"MMMAnimationCurveEaseOut","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveEaseIn":{"name":"MMMAnimationCurveEaseIn","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveEaseInOut":{"name":"MMMAnimationCurveEaseInOut","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveSofterEaseIn":{"name":"MMMAnimationCurveSofterEaseIn","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveSofterEaseOut":{"name":"MMMAnimationCurveSofterEaseOut","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveSofterEaseInOut":{"name":"MMMAnimationCurveSofterEaseInOut","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveEaseInQuad":{"name":"MMMAnimationCurveEaseInQuad","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveEaseOutQuad":{"name":"MMMAnimationCurveEaseOutQuad","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveEaseInOutQuad":{"name":"MMMAnimationCurveEaseInOutQuad","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveEaseInCubic":{"name":"MMMAnimationCurveEaseInCubic","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveEaseOutCubic":{"name":"MMMAnimationCurveEaseOutCubic","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveEaseInOutCubic":{"name":"MMMAnimationCurveEaseInOutCubic","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveEaseInQuart":{"name":"MMMAnimationCurveEaseInQuart","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveEaseOutQuart":{"name":"MMMAnimationCurveEaseOutQuart","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveEaseInOutQuart":{"name":"MMMAnimationCurveEaseInOutQuart","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveEaseInQuint":{"name":"MMMAnimationCurveEaseInQuint","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveEaseOutQuint":{"name":"MMMAnimationCurveEaseOutQuint","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveEaseInOutQuint":{"name":"MMMAnimationCurveEaseInOutQuint","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMScrollViewShadowAlignment.html#/c:@E@MMMScrollViewShadowAlignment@MMMScrollViewShadowAlignmentTop":{"name":"MMMScrollViewShadowAlignmentTop","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMScrollViewShadowAlignment"},"Enums/MMMScrollViewShadowAlignment.html#/c:@E@MMMScrollViewShadowAlignment@MMMScrollViewShadowAlignmentBottom":{"name":"MMMScrollViewShadowAlignmentBottom","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMScrollViewShadowAlignment"},"Enums/MMMScrollViewShadowAlignment.html":{"name":"MMMScrollViewShadowAlignment","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Enums/MMMAnimationCurve.html":{"name":"MMMAnimationCurve","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Enums/MMMLayoutAlignment.html":{"name":"MMMLayoutAlignment","abstract":"\u003cp\u003eGeneral alignment flags used when it\u0026rsquo;s not important which direction (vertical or horizontal) the alignment is for.\u003c/p\u003e"},"Enums/MMMLayoutDirection.html":{"name":"MMMLayoutDirection","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Enums/MMMLayoutHorizontalAlignment.html":{"name":"MMMLayoutHorizontalAlignment","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Enums/MMMLayoutVerticalAlignment.html":{"name":"MMMLayoutVerticalAlignment","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Constants.html#/c:@MMMGolden":{"name":"MMMGolden","abstract":"\u003cp\u003eGolden ratio constant.\u003c/p\u003e"},"Constants.html#/c:@MMMInverseGolden":{"name":"MMMInverseGolden","abstract":"\u003cp\u003e1 divided by golden ratio.\u003c/p\u003e"},"Constants.html#/c:@MMMSizeClassic":{"name":"MMMSizeClassic","abstract":"\u003cp\u003eSmall screen phones: iPhone 4/4s/5/5s/SE.\u003c/p\u003e"},"Constants.html#/c:@MMMSize6":{"name":"MMMSize6","abstract":"\u003cp\u003eRegular phones: iPhone 6/6s/7/8 and X as well.\u003c/p\u003e"},"Constants.html#/c:@MMMSize6Plus":{"name":"MMMSize6Plus","abstract":"\u003cp\u003ePluse-sized phones: iPhone 6/7/8 Plus.\u003c/p\u003e"},"Constants.html#/c:@MMMSizePad":{"name":"MMMSizePad","abstract":"\u003cp\u003eiPads: regular and pros.\u003c/p\u003e"},"Constants.html#/c:@MMMSizeRest":{"name":"MMMSizeRest","abstract":"\u003cp\u003eNot the actual size class, but can be used as a key \u003ccode\u003evalueForCurrentSizeClass:\u003c/code\u003e and related methods for a fallback value.\u003c/p\u003e"},"Classes/MMMStylesheetScaleConverter.html#/c:objc(cs)MMMStylesheetScaleConverter(im)initWithScales:":{"name":"-initWithScales:","abstract":"\u003cp\u003eInitializes the converter with an explicit table of scales.","parent_name":"MMMStylesheetScaleConverter"},"Classes/MMMStylesheetScaleConverter.html#/c:objc(cs)MMMStylesheetScaleConverter(im)initWithTargetSizeClass:dimensions:":{"name":"-initWithTargetSizeClass:dimensions:","abstract":"\u003cp\u003eInitializes the converter with a target size class and a table of dimensions associated with every size class","parent_name":"MMMStylesheetScaleConverter"},"Classes/MMMStylesheetScaleConverter.html#/c:objc(cs)MMMStylesheetScaleConverter(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStylesheetScaleConverter"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(py)currentSizeClass":{"name":"currentSizeClass","abstract":"\u003cp\u003eThe size class of the current device. See the MMSize* string constants below.\u003c/p\u003e","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(im)valueForCurrentSizeClass:":{"name":"-valueForCurrentSizeClass:","abstract":"\u003cp\u003eAllows to avoid code that picks values (fonts, sizes, etc) by explicitely matching \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbClasses/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(py)currentSizeClass\"\u003ecurrentSizeClass\u003c/a\u003e\u003c/code\u003e.","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(im)floatForCurrentSizeClass:":{"name":"-floatForCurrentSizeClass:","abstract":"\u003cp\u003eA version of \u003ccode\u003evalueForCurrentSizeClass:\u003c/code\u003e unwrapping the result as a float, which is handy for numeric values.\u003c/p\u003e","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(im)extrapolatedFloatForCurrentSizeClass:":{"name":"-extrapolatedFloatForCurrentSizeClass:","abstract":"\u003cp\u003eDeprecated.","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(im)extrapolatedFloatForCurrentSizeClass:except:":{"name":"-extrapolatedFloatForCurrentSizeClass:except:","abstract":"\u003cp\u003eDeprecated.","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(py)widthBasedConverter":{"name":"widthBasedConverter","abstract":"\u003cp\u003eConverts dimensions given for one size class into dimensions suitable for the current size class","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(py)extraExtraSmallPadding":{"name":"extraExtraSmallPadding","abstract":"\u003cp\u003eA standard set of paddings.","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(py)extraSmallPadding":{"name":"extraSmallPadding","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(py)smallPadding":{"name":"smallPadding","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(py)normalPadding":{"name":"normalPadding","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(py)largePadding":{"name":"largePadding","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(py)extraLargePadding":{"name":"extraLargePadding","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(im)insetsFromRelativeInsets:":{"name":"-insetsFromRelativeInsets:","abstract":"\u003cp\u003eActual insets from relative ones.\u003c/p\u003e","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(im)paddingFromRelativePadding:":{"name":"-paddingFromRelativePadding:","abstract":"\u003cp\u003eThis is what \u003ccode\u003einsetsFromRelativeInsets:\u003c/code\u003e is using internally. Might be useful when making similar methods.\u003c/p\u003e","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(im)dictionaryWithPaddings":{"name":"-dictionaryWithPaddings","abstract":"\u003cp\u003eA metrics dictionary that can be used with Auto Layout with keys/values corresponding to all the paddings we support,","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(im)dictionaryFromRelativeInsets:keyPrefix:":{"name":"-dictionaryFromRelativeInsets:keyPrefix:","abstract":"\u003cp\u003eA dictionary with 4 values under keys \u0026ldquo;\u003ckeyPrefix\u003eTop\u0026rdquo;, \u0026ldquo;\u003ckeyPrefix\u003eBottom\u0026rdquo;, \u0026ldquo;\u003ckeyPrefix\u003eLeft\u0026rdquo;, \u0026ldquo;\u003ckeyPrefix\u003eRight\u0026rdquo;","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(im)paddingDictionaryFromRelativeInsets:":{"name":"-paddingDictionaryFromRelativeInsets:","abstract":"\u003cp\u003eA dictionary with 4 values obtained from the insets returned by \u003ccode\u003einsetsFromRelativeInsets:insets\u003c/code\u003e","parent_name":"MMMStylesheet"},"Classes/MMMVerticalGradientView.html#/c:objc(cs)MMMVerticalGradientView(im)initWithTopColor:bottomColor:curve:":{"name":"-initWithTopColor:bottomColor:curve:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMVerticalGradientView"},"Classes/MMMVerticalGradientView.html#/c:objc(cs)MMMVerticalGradientView(im)initWithTopColor:bottomColor:":{"name":"-initWithTopColor:bottomColor:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMVerticalGradientView"},"Classes/MMMVerticalGradientView.html#/c:objc(cs)MMMVerticalGradientView(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMVerticalGradientView"},"Classes/MMMVerticalGradientView.html#/c:objc(cs)MMMVerticalGradientView(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMVerticalGradientView"},"Classes/MMMVerticalGradientView.html#/c:objc(cs)MMMVerticalGradientView(im)initWithFrame:":{"name":"-initWithFrame:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMVerticalGradientView"},"Classes/MMMPaddedView.html#/c:objc(cs)MMMPaddedView(py)view":{"name":"view","abstract":"\u003cp\u003eThe view being wrapped.\u003c/p\u003e","parent_name":"MMMPaddedView"},"Classes/MMMPaddedView.html#/c:objc(cs)MMMPaddedView(py)insets":{"name":"insets","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMPaddedView"},"Classes/MMMPaddedView.html#/c:objc(cs)MMMPaddedView(im)initWithView:insets:":{"name":"-initWithView:insets:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMPaddedView"},"Classes/MMMPaddedView.html#/c:objc(cs)MMMPaddedView(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMPaddedView"},"Classes/MMMPaddedView.html#/c:objc(cs)MMMPaddedView(im)initWithFrame:":{"name":"-initWithFrame:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMPaddedView"},"Classes/MMMPaddedView.html#/c:objc(cs)MMMPaddedView(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMPaddedView"},"Classes/MMMAutoLayoutIsolator.html#/c:objc(cs)MMMAutoLayoutIsolator(py)view":{"name":"view","abstract":"\u003cp\u003eThe view being wrapped.\u003c/p\u003e","parent_name":"MMMAutoLayoutIsolator"},"Classes/MMMAutoLayoutIsolator.html#/c:objc(cs)MMMAutoLayoutIsolator(im)initWithView:":{"name":"-initWithView:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAutoLayoutIsolator"},"Classes/MMMAutoLayoutIsolator.html#/c:objc(cs)MMMAutoLayoutIsolator(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAutoLayoutIsolator"},"Classes/MMMAutoLayoutIsolator.html#/c:objc(cs)MMMAutoLayoutIsolator(im)initWithFrame:":{"name":"-initWithFrame:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAutoLayoutIsolator"},"Classes/MMMAutoLayoutIsolator.html#/c:objc(cs)MMMAutoLayoutIsolator(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAutoLayoutIsolator"},"Classes/MMMHorizontalStackContainer.html#/c:objc(cs)MMMHorizontalStackContainer(im)initWithInsets:alignment:spacing:":{"name":"-initWithInsets:alignment:spacing:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMHorizontalStackContainer"},"Classes/MMMHorizontalStackContainer.html#/c:objc(cs)MMMHorizontalStackContainer(im)initWithDirection:insets:alignment:spacing:":{"name":"-initWithDirection:insets:alignment:spacing:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMHorizontalStackContainer"},"Classes/MMMVerticalStackContainer.html#/c:objc(cs)MMMVerticalStackContainer(im)initWithInsets:alignment:spacing:":{"name":"-initWithInsets:alignment:spacing:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMVerticalStackContainer"},"Classes/MMMVerticalStackContainer.html#/c:objc(cs)MMMVerticalStackContainer(im)initWithDirection:insets:alignment:spacing:":{"name":"-initWithDirection:insets:alignment:spacing:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMVerticalStackContainer"},"Classes/MMMStackContainer.html#/c:objc(cs)MMMStackContainer(im)setSubviews:":{"name":"-setSubviews:","abstract":"\u003cp\u003eSets subviews to be laid out. Previously set subviews will be removed from this container first.\u003c/p\u003e","parent_name":"MMMStackContainer"},"Classes/MMMStackContainer.html#/c:objc(cs)MMMStackContainer(im)initWithDirection:insets:alignment:spacing:":{"name":"-initWithDirection:insets:alignment:spacing:","abstract":"\u003cp\u003eInsets define the padding around all the subviews.","parent_name":"MMMStackContainer"},"Classes/MMMStackContainer.html#/c:objc(cs)MMMStackContainer(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStackContainer"},"Classes/MMMStackContainer.html#/c:objc(cs)MMMStackContainer(im)initWithFrame:":{"name":"-initWithFrame:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStackContainer"},"Classes/MMMStackContainer.html#/c:objc(cs)MMMStackContainer(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStackContainer"},"Classes/MMMSpacerView.html#/c:objc(cs)MMMSpacerView(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMSpacerView"},"Classes/MMMSpacerView.html#/c:objc(cs)MMMSpacerView(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMSpacerView"},"Classes/MMMSpacerView.html#/c:objc(cs)MMMSpacerView(im)initWithFrame:":{"name":"-initWithFrame:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMSpacerView"},"Classes/MMMCollectionView.html#/c:objc(cs)MMMCollectionView(im)initWithSettings:":{"name":"-initWithSettings:","abstract":"\u003cp\u003eUses UICollectionViewFlowLayout by default.\u003c/p\u003e","parent_name":"MMMCollectionView"},"Classes/MMMCollectionView.html#/c:objc(cs)MMMCollectionView(im)initWithFrame:collectionViewLayout:":{"name":"-initWithFrame:collectionViewLayout:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMCollectionView"},"Classes/MMMCollectionView.html#/c:objc(cs)MMMCollectionView(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMCollectionView"},"Classes/MMMCollectionView.html#/c:objc(cs)MMMCollectionView(im)initWithFrame:":{"name":"-initWithFrame:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMCollectionView"},"Classes/MMMCollectionView.html#/c:objc(cs)MMMCollectionView(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMCollectionView"},"Classes/MMMAnimationHandle.html#/c:objc(cs)MMMAnimationHandle(py)inProgress":{"name":"inProgress","abstract":"\u003cp\u003eYES, if the animation has not been finished yet.\u003c/p\u003e","parent_name":"MMMAnimationHandle"},"Classes/MMMAnimationHandle.html#/c:objc(cs)MMMAnimationHandle(im)cancel":{"name":"-cancel","abstract":"\u003cp\u003eFinishes animation before its designated end time.\u003c/p\u003e","parent_name":"MMMAnimationHandle"},"Classes/MMMAnimationHandle.html#/c:objc(cs)MMMAnimationHandle(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationHandle"},"Classes/MMMAnimator.html#/c:objc(cs)MMMAnimator(cm)shared":{"name":"+shared","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimator"},"Classes/MMMAnimator.html#/c:objc(cs)MMMAnimator(im)addAnimationWithDuration:updateBlock:doneBlock:":{"name":"-addAnimationWithDuration:updateBlock:doneBlock:","abstract":"\u003cp\u003eSchedules a new animation item.\u003c/p\u003e","parent_name":"MMMAnimator"},"Classes/MMMAnimator.html#/c:objc(cs)MMMAnimator(im)addAnimationWithDuration:repeatCount:autoreverse:updateBlock:doneBlock:":{"name":"-addAnimationWithDuration:repeatCount:autoreverse:updateBlock:doneBlock:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimator"},"Classes/MMMAnimator.html#/c:objc(cs)MMMAnimator(im)init":{"name":"-init","abstract":"\u003cp\u003eDespite the +shared method defined above you can still create own instances of this class.\u003c/p\u003e","parent_name":"MMMAnimator"},"Classes/MMMAnimator.html#/c:objc(cs)MMMAnimator(im)_testRunInNumberOfSteps:animations:forEachStep:":{"name":"-_testRunInNumberOfSteps:animations:forEachStep:","abstract":"\u003cp\u003eFor unit tests only: will synchronously run all the animations already in the animator and the ones added within","parent_name":"MMMAnimator"},"Classes/MMMAnimation.html#/c:objc(cs)MMMAnimation(cm)curvedTimeForTime:curve:":{"name":"+curvedTimeForTime:curve:","abstract":"\u003cp\u003eTime obtained by curving the given normalized time (from [0; 1] range).\u003c/p\u003e","parent_name":"MMMAnimation"},"Classes/MMMAnimation.html#/c:objc(cs)MMMAnimation(cm)timeForCurvedTime:curve:":{"name":"+timeForCurvedTime:curve:","abstract":"\u003cp\u003eInverse function for curvedTimeForTime:curve:, i.e. when we know the value returned by curvedTimeForTime:curve:","parent_name":"MMMAnimation"},"Classes/MMMAnimation.html#/c:objc(cs)MMMAnimation(cm)curvedTimeForTime:startTime:duration:curve:":{"name":"+curvedTimeForTime:startTime:duration:curve:","abstract":"\u003cp\u003eTime obtained by clamping the given time into [startTime; startTime + duration], normalizing to [0; 1] range,","parent_name":"MMMAnimation"},"Classes/MMMAnimation.html#/c:objc(cs)MMMAnimation(cm)interpolateFrom:to:time:":{"name":"+interpolateFrom:to:time:","abstract":"\u003cp\u003eA float between \u0026lsquo;from\u0026rsquo; and \u0026lsquo;to\u0026rsquo; corresponding to already normalized and curved time.\u003c/p\u003e","parent_name":"MMMAnimation"},"Classes/MMMAnimation.html#/c:objc(cs)MMMAnimation(cm)interpolateFrom:to:curvedTime:":{"name":"+interpolateFrom:to:curvedTime:","abstract":"\u003cp\u003eThis has been renamed. Use the version above.\u003c/p\u003e","parent_name":"MMMAnimation"},"Classes/MMMAnimation.html#/c:objc(cs)MMMAnimation(cm)interpolateFrom:to:time:startTime:duration:curve:":{"name":"+interpolateFrom:to:time:startTime:duration:curve:","abstract":"\u003cp\u003eValue between two floats corresponding to the given time and timing curve.","parent_name":"MMMAnimation"},"Classes/MMMAnimation.html#/c:objc(cs)MMMAnimation(cm)colorFrom:to:time:":{"name":"+colorFrom:to:time:","abstract":"\u003cp\u003eA color between \u0026lsquo;from\u0026rsquo; and \u0026lsquo;to\u0026rsquo; corresponding to already normalized and curved time.","parent_name":"MMMAnimation"},"Classes/MMMAnimation.html#/c:objc(cs)MMMAnimation(cm)pointFrom:to:time:":{"name":"+pointFrom:to:time:","abstract":"\u003cp\u003eA point on the line between given points corresponding to already normalized and curved time.\u003c/p\u003e","parent_name":"MMMAnimation"},"Classes/MMMVelocityMeter.html#/c:objc(cs)MMMVelocityMeter(im)reset":{"name":"-reset","abstract":"\u003cp\u003eResets the state of the meter, all values added before are forgotten.\u003c/p\u003e","parent_name":"MMMVelocityMeter"},"Classes/MMMVelocityMeter.html#/c:objc(cs)MMMVelocityMeter(im)addValue:timestamp:":{"name":"-addValue:timestamp:","abstract":"\u003cp\u003eAdds a coordinate and a corresponding timestamp.\u003c/p\u003e","parent_name":"MMMVelocityMeter"},"Classes/MMMVelocityMeter.html#/c:objc(cs)MMMVelocityMeter(im)addValue:":{"name":"-addValue:","abstract":"\u003cp\u003eAdds a coordinate with the current timstamp.\u003c/p\u003e","parent_name":"MMMVelocityMeter"},"Classes/MMMVelocityMeter.html#/c:objc(cs)MMMVelocityMeter(im)calculateVelocity:acceleration:":{"name":"-calculateVelocity:acceleration:","abstract":"\u003cp\u003eCalculates velocity and acceleration based on recently added values.\u003c/p\u003e","parent_name":"MMMVelocityMeter"},"Classes/MMMLayoutUtils.html#/c:objc(cs)MMMLayoutUtils(cm)rectWithSize:anchor:withinRect:anchor:":{"name":"+rectWithSize:anchor:withinRect:anchor:","abstract":"\u003cp\u003eA rect with the given size positioned inside of the target rect in such a way that anchor points of both rects align.\u003c/p\u003e","parent_name":"MMMLayoutUtils"},"Classes/MMMLayoutUtils.html#/c:objc(cs)MMMLayoutUtils(cm)rectWithSize:withinRect:anchor:":{"name":"+rectWithSize:withinRect:anchor:","abstract":"\u003cp\u003eA shortcut for the above method with anchors being the same for both source and target rect.","parent_name":"MMMLayoutUtils"},"Classes/MMMLayoutUtils.html#/c:objc(cs)MMMLayoutUtils(cm)rectWithSize:withinRect:contentMode:":{"name":"+rectWithSize:withinRect:contentMode:","abstract":"\u003cp\u003eA frame for the \u003ccode\u003esourceRect\u003c/code\u003e positioned within the \u003ccode\u003etargetRect\u003c/code\u003e according to standard \u003ccode\u003eUIViewContentMode\u003c/code\u003e flags","parent_name":"MMMLayoutUtils"},"Classes/MMMLayoutUtils.html#/c:objc(cs)MMMLayoutUtils(cm)rectWithSize:atPoint:anchor:":{"name":"+rectWithSize:atPoint:anchor:","abstract":"\u003cp\u003eA frame of the given size with its center at the specified point (assuming the center is defined by the given anchor","parent_name":"MMMLayoutUtils"},"Classes/MMMLayoutUtils.html#/c:objc(cs)MMMLayoutUtils(cm)rectWithSize:center:":{"name":"+rectWithSize:center:","abstract":"\u003cp\u003eSame as rectWithSize:center:anchor: with anchor set to (0.5, 0.5).\u003c/p\u003e","parent_name":"MMMLayoutUtils"},"Classes/MMMContainerView.html#/c:objc(cs)MMMContainerView(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMContainerView"},"Classes/MMMContainerView.html#/c:objc(cs)MMMContainerView(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMContainerView"},"Classes/MMMContainerView.html#/c:objc(cs)MMMContainerView(im)initWithFrame:":{"name":"-initWithFrame:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMContainerView"},"Classes/MMMShadowView.html#/c:objc(cs)MMMShadowView(py)contentView":{"name":"contentView","abstract":"\u003cp\u003eView that can accepts and lay out subviews.\u003c/p\u003e","parent_name":"MMMShadowView"},"Classes/MMMShadowView.html#/c:objc(cs)MMMShadowView(py)settings":{"name":"settings","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMShadowView"},"Classes/MMMShadowView.html#/c:objc(cs)MMMShadowView(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMShadowView"},"Classes/MMMShadowView.html#/c:objc(cs)MMMShadowView(im)initWithSettings:":{"name":"-initWithSettings:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMShadowView"},"Classes/MMMShadowView.html#/c:objc(cs)MMMShadowView(im)initWithFrame:":{"name":"-initWithFrame:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMShadowView"},"Classes/MMMShadowView.html#/c:objc(cs)MMMShadowView(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMShadowView"},"Classes/MMMShadowViewSetting.html#/c:objc(cs)MMMShadowViewSetting(py)color":{"name":"color","abstract":"\u003cp\u003eDefault is black color.\u003c/p\u003e","parent_name":"MMMShadowViewSetting"},"Classes/MMMShadowViewSetting.html#/c:objc(cs)MMMShadowViewSetting(py)opacity":{"name":"opacity","abstract":"\u003cp\u003eDefault is 0.\u003c/p\u003e","parent_name":"MMMShadowViewSetting"},"Classes/MMMShadowViewSetting.html#/c:objc(cs)MMMShadowViewSetting(py)offset":{"name":"offset","abstract":"\u003cp\u003eDefault is zero.\u003c/p\u003e","parent_name":"MMMShadowViewSetting"},"Classes/MMMShadowViewSetting.html#/c:objc(cs)MMMShadowViewSetting(py)radius":{"name":"radius","abstract":"\u003cp\u003eDefault is 0.\u003c/p\u003e","parent_name":"MMMShadowViewSetting"},"Classes/MMMShadowViewSetting.html#/c:objc(cs)MMMShadowViewSetting(py)insets":{"name":"insets","abstract":"\u003cp\u003eDefault is zero.\u003c/p\u003e","parent_name":"MMMShadowViewSetting"},"Classes/MMMShadowViewSetting.html#/c:objc(cs)MMMShadowViewSetting(py)backgroundColor":{"name":"backgroundColor","abstract":"\u003cp\u003eDefault is white color.\u003c/p\u003e","parent_name":"MMMShadowViewSetting"},"Classes/MMMShadowViewSetting.html#/c:objc(cs)MMMShadowViewSetting(py)cornerRadius":{"name":"cornerRadius","abstract":"\u003cp\u003eDefault is 0.\u003c/p\u003e","parent_name":"MMMShadowViewSetting"},"Classes/MMMShadowViewSetting.html#/c:objc(cs)MMMShadowViewSetting(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMShadowViewSetting"},"Classes/MMMShadowViewSetting.html#/c:objc(cs)MMMShadowViewSetting(im)initWithBlock:":{"name":"-initWithBlock:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMShadowViewSetting"},"Classes/MMMTableView.html#/c:objc(cs)MMMTableView(im)initWithSettings:style:":{"name":"-initWithSettings:style:","parent_name":"MMMTableView"},"Classes/MMMTableView.html#/c:objc(cs)MMMTableView(im)initWithSettings:":{"name":"-initWithSettings:","abstract":"\u003cp\u003eNote that UITableViewStylePlain is used.\u003c/p\u003e","parent_name":"MMMTableView"},"Classes/MMMTableView.html#/c:objc(cs)MMMTableView(im)initWithFrame:style:":{"name":"-initWithFrame:style:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMTableView"},"Classes/MMMTableView.html#/c:objc(cs)MMMTableView(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMTableView"},"Classes/MMMTableView.html#/c:objc(cs)MMMTableView(im)initWithFrame:":{"name":"-initWithFrame:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMTableView"},"Classes/MMMTableView.html#/c:objc(cs)MMMTableView(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMTableView"},"Classes/MMMTableView.html#/c:objc(cs)MMMTableView(py)shouldHandlePotentialCellSizeChanges":{"name":"shouldHandlePotentialCellSizeChanges","abstract":"\u003cp\u003eWhen enabled, then \u003ccode\u003ereloadData\u003c/code\u003e is automatically called whenever any of the cells report potential size","parent_name":"MMMTableView"},"Classes/MMMNavigationStack.html#/c:objc(cs)MMMNavigationStack(cm)shared":{"name":"+shared","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMNavigationStack"},"Classes/MMMNavigationStack.html#/c:objc(cs)MMMNavigationStack(im)pushItemWithName:delegate:controller:":{"name":"-pushItemWithName:delegate:controller:","abstract":"\u003cp\u003eNotifies the stack about a new modal navigation context facing the user now, such as a modal view controller being presented or","parent_name":"MMMNavigationStack"},"Classes/MMMNavigationStack.html#/c:objc(cs)MMMNavigationStack(im)popAllAfterController:completion:":{"name":"-popAllAfterController:completion:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMNavigationStack"},"Classes/MMMStubView.html#/c:objc(cs)MMMStubView(im)initWithText:index:":{"name":"-initWithText:index:","abstract":"\u003cp\u003eThe text is optional, the index influences the background color.\u003c/p\u003e","parent_name":"MMMStubView"},"Classes/MMMStubView.html#/c:objc(cs)MMMStubView(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStubView"},"Classes/MMMStubView.html#/c:objc(cs)MMMStubView(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStubView"},"Classes/MMMStubView.html#/c:objc(cs)MMMStubView(im)initWithFrame:":{"name":"-initWithFrame:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStubView"},"Classes/MMMAutoLayoutScrollView.html#/c:objc(cs)MMMAutoLayoutScrollView(py)contentView":{"name":"contentView","abstract":"\u003cp\u003eThis is where your content subviews should be added.\u003c/p\u003e","parent_name":"MMMAutoLayoutScrollView"},"Classes/MMMAutoLayoutScrollView.html#/c:objc(cs)MMMAutoLayoutScrollView(im)initWithSettings:":{"name":"-initWithSettings:","abstract":"\u003cp\u003eInitializes with the given config.\u003c/p\u003e","parent_name":"MMMAutoLayoutScrollView"},"Classes/MMMAutoLayoutScrollView.html#/c:objc(cs)MMMAutoLayoutScrollView(im)init":{"name":"-init","abstract":"\u003cp\u003eInitializes with default settings, a shortcut for \u003ccode\u003einitWithSettings:[[MMMScrollViewShadowsSettings alloc] init]\u003c/code\u003e.\u003c/p\u003e","parent_name":"MMMAutoLayoutScrollView"},"Classes/MMMAutoLayoutScrollView.html#/c:objc(cs)MMMAutoLayoutScrollView(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAutoLayoutScrollView"},"Classes/MMMAutoLayoutScrollView.html#/c:objc(cs)MMMAutoLayoutScrollView(im)initWithFrame:":{"name":"-initWithFrame:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAutoLayoutScrollView"},"Classes/MMMImageView.html#/c:objc(cs)MMMImageView(py)image":{"name":"image","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMImageView"},"Classes/MMMImageView.html#/c:objc(cs)MMMImageView(py)highlightedImage":{"name":"highlightedImage","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMImageView"},"Classes/MMMImageView.html#/c:objc(cs)MMMImageView(py)highlighted":{"name":"highlighted","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMImageView"},"Classes/MMMImageView.html#/c:objc(cs)MMMImageView(im)initWithImage:highlightedImage:":{"name":"-initWithImage:highlightedImage:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMImageView"},"Classes/MMMImageView.html#/c:objc(cs)MMMImageView(im)init":{"name":"-init","abstract":"\u003cp\u003eConvenience initializer.\u003c/p\u003e","parent_name":"MMMImageView"},"Classes/MMMImageView.html#/c:objc(cs)MMMImageView(im)initWithImage:":{"name":"-initWithImage:","abstract":"\u003cp\u003eConvenience initializer.\u003c/p\u003e","parent_name":"MMMImageView"},"Classes/MMMImageView.html#/c:objc(cs)MMMImageView(im)initWithFrame:":{"name":"-initWithFrame:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMImageView"},"Classes/MMMImageView.html#/c:objc(cs)MMMImageView(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMImageView"},"Classes/MMMStubViewController.html#/c:objc(cs)MMMStubViewController(im)initWithText:index:":{"name":"-initWithText:index:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStubViewController"},"Classes/MMMStubViewController.html#/c:objc(cs)MMMStubViewController(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStubViewController"},"Classes/MMMStubViewController.html#/c:objc(cs)MMMStubViewController(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStubViewController"},"Classes/MMMStubViewController.html#/c:objc(cs)MMMStubViewController(im)initWithNibName:bundle:":{"name":"-initWithNibName:bundle:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStubViewController"},"Classes/MMMNavigationRequest.html#/c:objc(cs)MMMNavigationRequest(py)originalPath":{"name":"originalPath","abstract":"\u003cp\u003eA sequence of hops the request has started with. This is never changed during lifetime of the request.\u003c/p\u003e","parent_name":"MMMNavigationRequest"},"Classes/MMMNavigationRequest.html#/c:objc(cs)MMMNavigationRequest(py)path":{"name":"path","abstract":"\u003cp\u003eThe current sequence of hops to follow. Handlers can adjust this.\u003c/p\u003e","parent_name":"MMMNavigationRequest"},"Classes/MMMNavigationRequest.html#/c:objc(cs)MMMNavigationRequest(im)didFinishSuccessfully:":{"name":"-didFinishSuccessfully:","abstract":"\u003cp\u003eCalled by the handler when all the hops in the path were followed through.\u003c/p\u003e","parent_name":"MMMNavigationRequest"},"Classes/MMMNavigationRequest.html#/c:objc(cs)MMMNavigationRequest(im)continueWithPath:handler:":{"name":"-continueWithPath:handler:","abstract":"\u003cp\u003eCalled by the handler to indicate that the sequence of hops (possibly changed) should be continued by another handler.","parent_name":"MMMNavigationRequest"},"Classes/MMMNavigation.html#/c:objc(cs)MMMNavigation(cm)root":{"name":"+root","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMNavigation"},"Classes/MMMNavigation.html#/c:objc(cs)MMMNavigation(im)navigateTo:completion:":{"name":"-navigateTo:completion:","abstract":"\u003cp\u003eStarts the process of opening of the given path. Calls the completion block when done, the block receives ID of the","parent_name":"MMMNavigation"},"Classes/MMMNavigation.html#/c:objc(cs)MMMNavigation(im)addHandler:":{"name":"-addHandler:","abstract":"\u003cp\u003eAdds a handler and returns a cookie/ID object that can be later used to remove it.\u003c/p\u003e","parent_name":"MMMNavigation"},"Classes/MMMNavigation.html#/c:objc(cs)MMMNavigation(im)removeHandlerWithId:":{"name":"-removeHandlerWithId:","abstract":"\u003cp\u003eRemoves a handler by its ID assigned by addHandler.\u003c/p\u003e","parent_name":"MMMNavigation"},"Classes/MMMNavigationPath.html#/c:objc(cs)MMMNavigationPath(py)hops":{"name":"hops","abstract":"\u003cp\u003eAll the \u0026ldquo;hops\u0026rdquo; the link consists of.\u003c/p\u003e","parent_name":"MMMNavigationPath"},"Classes/MMMNavigationPath.html#/c:objc(cs)MMMNavigationPath(im)pathWithoutFirstHop":{"name":"-pathWithoutFirstHop","abstract":"\u003cp\u003eA new path obtained from the current one by removing the first hop.\u003c/p\u003e","parent_name":"MMMNavigationPath"},"Classes/MMMNavigationPath.html#/c:objc(cs)MMMNavigationPath(im)firstHop":{"name":"-firstHop","abstract":"\u003cp\u003eThe first hop in the path or nil if the path is empty.\u003c/p\u003e","parent_name":"MMMNavigationPath"},"Classes/MMMNavigationPath.html#/c:objc(cs)MMMNavigationPath(im)initWithHops:":{"name":"-initWithHops:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMNavigationPath"},"Classes/MMMNavigationPath.html#/c:objc(cs)MMMNavigationPath(im)initWithURI:":{"name":"-initWithURI:","abstract":"\u003cp\u003eConvenience initializer. Allows to use URIs like \u0026ldquo;main/recipes\u0026rdquo;, to construct hops out of it.","parent_name":"MMMNavigationPath"},"Classes/MMMNavigationPath.html#/c:objc(cs)MMMNavigationPath(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMNavigationPath"},"Classes/MMMNavigationHop.html#/c:objc(cs)MMMNavigationHop(py)action":{"name":"action","abstract":"\u003cp\u003eName/ID of the hop. Supposed to be a flat string, like \u0026lsquo;recipes\u0026rsquo;, not a path.\u003c/p\u003e","parent_name":"MMMNavigationHop"},"Classes/MMMNavigationHop.html#/c:objc(cs)MMMNavigationHop(py)params":{"name":"params","abstract":"\u003cp\u003eOptional parameters for this hop only.\u003c/p\u003e","parent_name":"MMMNavigationHop"},"Classes/MMMNavigationHop.html#/c:objc(cs)MMMNavigationHop(im)initWithAction:params:":{"name":"-initWithAction:params:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMNavigationHop"},"Classes/MMMNavigationHop.html#/c:objc(cs)MMMNavigationHop(im)initWithAction:":{"name":"-initWithAction:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMNavigationHop"},"Classes/MMMNavigationHop.html#/c:objc(cs)MMMNavigationHop(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMNavigationHop"},"Classes/MMMViewWrappingCell.html#/c:objc(cs)MMMViewWrappingCell(py)wrappedView":{"name":"wrappedView","abstract":"\u003cp\u003eThe view this cell wraps. It is added into the \u003ccode\u003econtentView\u003c/code\u003e and is laid out to fully fill it.\u003c/p\u003e","parent_name":"MMMViewWrappingCell"},"Classes/MMMViewWrappingCell.html#/c:objc(cs)MMMViewWrappingCell(im)initWithView:reuseIdentifier:":{"name":"-initWithView:reuseIdentifier:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMViewWrappingCell"},"Classes/MMMViewWrappingCell.html#/c:objc(cs)MMMViewWrappingCell(im)initWithView:reuseIdentifier:inset:":{"name":"-initWithView:reuseIdentifier:inset:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMViewWrappingCell"},"Classes/MMMViewWrappingCell.html#/c:objc(cs)MMMViewWrappingCell(im)initWithReuseIdentifier:":{"name":"-initWithReuseIdentifier:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMViewWrappingCell"},"Classes/MMMTableViewCell.html#/c:objc(cs)MMMTableViewCell(im)initWithReuseIdentifier:":{"name":"-initWithReuseIdentifier:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMTableViewCell"},"Classes/MMMTableViewCell.html#/c:objc(cs)MMMTableViewCell(im)initWithStyle:reuseIdentifier:":{"name":"-initWithStyle:reuseIdentifier:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMTableViewCell"},"Classes/MMMTableViewCell.html#/c:objc(cs)MMMTableViewCell(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMTableViewCell"},"Classes/MMMTableViewCell.html#/c:objc(cs)MMMTableViewCell(im)initWithFrame:":{"name":"-initWithFrame:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMTableViewCell"},"Classes/MMMTableViewCell.html#/c:objc(cs)MMMTableViewCell(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMTableViewCell"},"Classes/MMMWebView.html#/c:objc(cs)MMMWebView(im)initWithSettings:":{"name":"-initWithSettings:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMWebView"},"Classes/MMMWebView.html#/c:objc(cs)MMMWebView(im)initWithSettings:configuration:":{"name":"-initWithSettings:configuration:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMWebView"},"Classes/MMMWebView.html#/c:objc(cs)MMMWebView(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMWebView"},"Classes/MMMWebView.html#/c:objc(cs)MMMWebView(im)initWithFrame:":{"name":"-initWithFrame:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMWebView"},"Classes/MMMWebView.html#/c:objc(cs)MMMWebView(im)initWithFrame:configuration:":{"name":"-initWithFrame:configuration:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMWebView"},"Classes/MMMWebView.html#/c:objc(cs)MMMWebView(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMWebView"},"Classes/MMMScrollViewShadowView.html#/c:objc(cs)MMMScrollViewShadowView(im)initWithAlignment:settings:":{"name":"-initWithAlignment:settings:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMScrollViewShadowView"},"Classes/MMMScrollViewShadowView.html#/c:objc(cs)MMMScrollViewShadowView(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMScrollViewShadowView"},"Classes/MMMScrollViewShadowView.html#/c:objc(cs)MMMScrollViewShadowView(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMScrollViewShadowView"},"Classes/MMMScrollViewShadowView.html#/c:objc(cs)MMMScrollViewShadowView(im)initWithFrame:":{"name":"-initWithFrame:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMScrollViewShadowView"},"Classes/MMMScrollViewShadowsSettings.html#/c:objc(cs)MMMScrollViewShadowsSettings(py)shadowAlpha":{"name":"shadowAlpha","abstract":"\u003cp\u003eThe base shadow color is black with this amount of transparency applied to it.\u003c/p\u003e","parent_name":"MMMScrollViewShadowsSettings"},"Classes/MMMScrollViewShadowsSettings.html#/c:objc(cs)MMMScrollViewShadowsSettings(py)shadowColor":{"name":"shadowColor","abstract":"\u003cp\u003eThe base shadow color, ensure this is an RGB color. Note that the alpha channel is ignored, use \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbClasses/MMMScrollViewShadowsSettings.html#/c:objc(cs)MMMScrollViewShadowsSettings(py)shadowAlpha\"\u003eshadowAlpha\u003c/a\u003e\u003c/code\u003e instead.\u003c/p\u003e","parent_name":"MMMScrollViewShadowsSettings"},"Classes/MMMScrollViewShadowsSettings.html#/c:objc(cs)MMMScrollViewShadowsSettings(py)shadowCurvature":{"name":"shadowCurvature","abstract":"\u003cp\u003eThe value between 0 and 1 telling how close to an elliptical curve the shadow\u0026rsquo;s border should be.\u003c/p\u003e","parent_name":"MMMScrollViewShadowsSettings"},"Classes/MMMScrollViewShadowsSettings.html#/c:objc(cs)MMMScrollViewShadowsSettings(py)topShadowEnabled":{"name":"topShadowEnabled","abstract":"\u003cp\u003eDisabled by default.\u003c/p\u003e","parent_name":"MMMScrollViewShadowsSettings"},"Classes/MMMScrollViewShadowsSettings.html#/c:objc(cs)MMMScrollViewShadowsSettings(py)topShadowHeight":{"name":"topShadowHeight","abstract":"\u003cp\u003eThe height of the top shadow view. (5px by default.)\u003c/p\u003e","parent_name":"MMMScrollViewShadowsSettings"},"Classes/MMMScrollViewShadowsSettings.html#/c:objc(cs)MMMScrollViewShadowsSettings(py)topShadowShouldUseContentInsets":{"name":"topShadowShouldUseContentInsets","abstract":"\u003cp\u003eYES, if the top shadow should be offset from the top edge of the scroll view by the top offset of content insets.\u003c/p\u003e","parent_name":"MMMScrollViewShadowsSettings"},"Classes/MMMScrollViewShadowsSettings.html#/c:objc(cs)MMMScrollViewShadowsSettings(py)bottomShadowEnabled":{"name":"bottomShadowEnabled","abstract":"\u003cp\u003eDisabled by default.\u003c/p\u003e","parent_name":"MMMScrollViewShadowsSettings"},"Classes/MMMScrollViewShadowsSettings.html#/c:objc(cs)MMMScrollViewShadowsSettings(py)bottomShadowHeight":{"name":"bottomShadowHeight","abstract":"\u003cp\u003eThe height of the bottom shadow view. (10px by default.)\u003c/p\u003e","parent_name":"MMMScrollViewShadowsSettings"},"Classes/MMMScrollViewShadowsSettings.html#/c:objc(cs)MMMScrollViewShadowsSettings(py)bottomShadowShouldUseContentInsets":{"name":"bottomShadowShouldUseContentInsets","abstract":"\u003cp\u003eYES, if the bottom shadow should be offset from the bottom edge of the scroll view by the bottom offset of content insets.\u003c/p\u003e","parent_name":"MMMScrollViewShadowsSettings"},"Classes/MMMScrollViewShadowsSettings.html#/c:objc(cs)MMMScrollViewShadowsSettings(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMScrollViewShadowsSettings"},"Classes/MMMScrollViewShadows.html#/c:objc(cs)MMMScrollViewShadows(im)initWithScrollView:settings:":{"name":"-initWithScrollView:settings:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMScrollViewShadows"},"Classes/MMMScrollViewShadows.html#/c:objc(cs)MMMScrollViewShadows(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMScrollViewShadows"},"Classes/MMMScrollViewShadows.html#/c:objc(cs)MMMScrollViewShadows(im)layoutSubviews":{"name":"-layoutSubviews","abstract":"\u003cp\u003eHave to be called from \u003ccode\u003elayoutSubviews\u003c/code\u003e of our scroll view subclass to update the state of the shadows.\u003c/p\u003e","parent_name":"MMMScrollViewShadows"},"Classes/MMMScrollViewShadows.html#/c:objc(cs)MMMScrollViewShadows(im)mightNeedClippingView":{"name":"-mightNeedClippingView","abstract":"\u003cp\u003eYES, if additional content view clipping might be needed for the current shadow settings.\u003c/p\u003e","parent_name":"MMMScrollViewShadows"},"Classes/MMMScrollViewShadows.html#/c:objc(cs)MMMScrollViewShadows(im)layoutSubviewsWithClippingView:":{"name":"-layoutSubviewsWithClippingView:","abstract":"\u003cp\u003eSame as \u003ccode\u003elayoutSubviews\u003c/code\u003e above but also updates \u003ccode\u003eclipToBounds\u003c/code\u003e property of the given view in case there are visible\u003c/p\u003e","parent_name":"MMMScrollViewShadows"},"Classes/MMMScrollViewShadows.html":{"name":"MMMScrollViewShadows","abstract":"\u003cp\u003eA helper for adding top and bottom shadows into any UIScrollView-based class."},"Classes/MMMScrollViewShadowsSettings.html":{"name":"MMMScrollViewShadowsSettings","abstract":"\u003cp\u003eHolds configuration for MMMScrollViewShadows that can be set only on initialization time.\u003c/p\u003e"},"Classes/MMMScrollViewShadowView.html":{"name":"MMMScrollViewShadowView","abstract":"\u003cp\u003eA view that\u0026rsquo;s used internally to render shadows in MMMAutoLayoutScrollView."},"Classes/MMMWebView.html":{"name":"MMMWebView","abstract":"\u003cp\u003eWeb view supporting top \u0026amp; bottom shadows.\u003c/p\u003e"},"Classes/MMMTableViewCell.html":{"name":"MMMTableViewCell","abstract":"\u003cp\u003eA base for table view cells redeclareing the designated initializer into the one we typically use,"},"Classes/MMMViewWrappingCell.html":{"name":"MMMViewWrappingCell","abstract":"\u003cp\u003eA simple table view cell wrapping the given view. \u003c/p\u003e"},"Classes/MMMNavigationHop.html":{"name":"MMMNavigationHop","abstract":"\u003cp\u003eOpening a deep link can involve following through one or more steps, for example:\u003c/p\u003e"},"Classes/MMMNavigationPath.html":{"name":"MMMNavigationPath","abstract":"\u003cp\u003eA navigation path is just a collection of one or more \u0026ldquo;hops\u0026rdquo;.\u003c/p\u003e"},"Classes/MMMNavigation.html":{"name":"MMMNavigation","abstract":"\u003cp\u003eManages switching between different sections of the app (kind of internal URL router)."},"Classes/MMMNavigationRequest.html":{"name":"MMMNavigationRequest","abstract":"\u003cp\u003eInfo about a navigation request that is passed to handlers.\u003c/p\u003e"},"Classes/MMMStubViewController.html":{"name":"MMMStubViewController","abstract":"\u003cp\u003eThis is to be used during development to stub not ready yet parts of the app.\u003c/p\u003e"},"Classes/MMMImageView.html":{"name":"MMMImageView","abstract":"\u003cp\u003eA limited replacement for UIImageView fixing its inability to properly work with images having"},"Classes/MMMAutoLayoutScrollView.html":{"name":"MMMAutoLayoutScrollView","abstract":"\u003cp\u003eA vertical scroll view with a content view and preconfigured constraints, so there is no need in creating"},"Classes.html#/c:objc(cs)MMMAutoLayoutScrollViewContentView":{"name":"MMMAutoLayoutScrollViewContentView","abstract":"\u003cp\u003eA subview of MMMAutoLayoutScrollView where all the subviews should be added.\u003c/p\u003e"},"Classes/MMMStubView.html":{"name":"MMMStubView","abstract":"\u003cp\u003eTo be used during development as a placeholder for not yet implemented views."},"Classes/MMMNavigationStack.html":{"name":"MMMNavigationStack","abstract":"\u003cp\u003eThis is to track the navigation state of the app and have the possibility to programmatically return to registered points of"},"Classes/MMMTableView.html":{"name":"MMMTableView","abstract":"\u003cp\u003eA table view supporting top and bottom shadows.\u003c/p\u003e"},"Classes/MMMShadowViewSetting.html":{"name":"MMMShadowViewSetting","abstract":"\u003cp\u003eHolds configuration for MMMShadowView.\u003c/p\u003e"},"Classes/MMMShadowView.html":{"name":"MMMShadowView","abstract":"\u003cp\u003eHelper view for adding custom layer shadows, while taking the the shadow sizes in conserderation for its final frame.\u003c/p\u003e"},"Classes/MMMContainerView.html":{"name":"MMMContainerView","abstract":"\u003cp\u003eAuto Layout does not support constraints against groups of items, so this is for the cases a normal UIView is"},"Classes/MMMLayoutUtils.html":{"name":"MMMLayoutUtils","abstract":"\u003cp\u003eThis is to group a few simple layout helpers.\u003c/p\u003e"},"Classes/MMMVelocityMeter.html":{"name":"MMMVelocityMeter","abstract":"\u003cp\u003eA little helper for velocity/acceleration calculations: you feed it values with timestamps and can get the most recent"},"Classes/MMMAnimation.html":{"name":"MMMAnimation","abstract":"\u003cp\u003eMinimalistic animation helpers.\u003c/p\u003e"},"Classes/MMMAnimator.html":{"name":"MMMAnimator","abstract":"\u003cp\u003eMinimalistic animator object in the spirit of helpers defined in MMMAnimation.\u003c/p\u003e"},"Classes/MMMAnimationHandle.html":{"name":"MMMAnimationHandle","abstract":"\u003cp\u003eSort of a handle returned by MMMAnimator when a new animation is scheduled."},"Classes/MMMCollectionView.html":{"name":"MMMCollectionView","abstract":"\u003cp\u003eCollection view supporting top \u0026amp; bottom shadows.\u003c/p\u003e"},"Classes/MMMSpacerView.html":{"name":"MMMSpacerView","abstract":"\u003cp\u003eAuto Layout does not support relationships between empty spaces, so we need to use spacer views and set such"},"Classes/MMMStackContainer.html":{"name":"MMMStackContainer","abstract":"\u003cp\u003eA container which lays out its subviews in certain direction one after another using fixed spacing between them."},"Classes/MMMVerticalStackContainer.html":{"name":"MMMVerticalStackContainer","abstract":"\u003cp\u003eVertical version of MMMStackContainer.\u003c/p\u003e"},"Classes/MMMHorizontalStackContainer.html":{"name":"MMMHorizontalStackContainer","abstract":"\u003cp\u003eHorizontal version of MMMStackContainer.\u003c/p\u003e"},"Classes/MMMAutoLayoutIsolator.html":{"name":"MMMAutoLayoutIsolator","abstract":"\u003cp\u003eWraps a view that uses Auto Layout into a manual layout view providing sizeThatFits: for the outside world."},"Classes/MMMPaddedView.html":{"name":"MMMPaddedView","abstract":"\u003cp\u003eWraps a view padding it from all the sides.\u003c/p\u003e"},"Classes/MMMVerticalGradientView.html":{"name":"MMMVerticalGradientView","abstract":"\u003cp\u003eA view displaying a gradient from top to bottom. The linearity of the gradient can be controlled."},"Classes/MMMStylesheet.html":{"name":"MMMStylesheet","abstract":"\u003cp\u003eA base for app-specific stylesheets: commonly used paddings, colors, fonts, etc in a single place.\u003c/p\u003e"},"Classes/MMMStylesheetScaleConverter.html":{"name":"MMMStylesheetScaleConverter","abstract":"\u003cp\u003eDimension converter that uses a table of scales.\u003c/p\u003e"},"Categories/NSLayoutConstraint%28MMMTemple%29.html#/c:objc(cs)NSLayoutConstraint(cm)mmm_constraintsWithVisualFormat:options:metrics:views:":{"name":"+mmm_constraintsWithVisualFormat:options:metrics:views:","abstract":"\u003cp\u003eOur wrapper over the corresponding method of NSLayoutConstraint extending the visual layout language a bit to support","parent_name":"NSLayoutConstraint(MMMTemple)"},"Categories/NSLayoutConstraint%28MMMTemple%29.html#/c:objc(cs)NSLayoutConstraint(cm)mmm_activateConstraintsWithVisualFormat:options:metrics:views:":{"name":"+mmm_activateConstraintsWithVisualFormat:options:metrics:views:","abstract":"\u003cp\u003eA shortcut for \u003ccode\u003e[NSLayoutConstraint activateConstraints:[NSLayoutConstraint mmm_constraintsWithVisualFormat:...\u003c/code\u003e.\u003c/p\u003e","parent_name":"NSLayoutConstraint(MMMTemple)"},"Categories/NSLayoutConstraint%28MMMTemple%29.html#/c:objc(cs)NSLayoutConstraint(cm)activateConstraint:":{"name":"+activateConstraint:","abstract":"\u003cp\u003eMissing counterparts for (de)activateConstraints, so constraint activation code looks the same for individual constraints.\u003c/p\u003e","parent_name":"NSLayoutConstraint(MMMTemple)"},"Categories/NSLayoutConstraint%28MMMTemple%29.html#/c:objc(cs)NSLayoutConstraint(cm)deactivateConstraint:":{"name":"+deactivateConstraint:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NSLayoutConstraint(MMMTemple)"},"Categories/NSLayoutConstraint%28MMMTemple%29.html#/c:objc(cs)NSLayoutConstraint(cm)constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:priority:":{"name":"+constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:priority:","abstract":"\u003cp\u003eA missing convenience initializer including priority.\u003c/p\u003e","parent_name":"NSLayoutConstraint(MMMTemple)"},"Categories/NSLayoutConstraint%28MMMTemple%29.html#/c:objc(cs)NSLayoutConstraint(cm)constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:identifier:":{"name":"+constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:identifier:","abstract":"\u003cp\u003eA missing convenience initializer allowing to set identifier for this constraint.\u003c/p\u003e","parent_name":"NSLayoutConstraint(MMMTemple)"},"Categories/NSLayoutConstraint%28MMMTemple%29.html#/c:objc(cs)NSLayoutConstraint(cm)constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:priority:identifier:":{"name":"+constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:priority:identifier:","abstract":"\u003cp\u003eA missing convenience initializer allowing to set both priority and identifier for this constraint.\u003c/p\u003e","parent_name":"NSLayoutConstraint(MMMTemple)"},"Categories/NSLayoutConstraint%28MMMTemple%29.html#/c:objc(cs)NSLayoutConstraint(cm)constraintsWithVisualFormat:options:metrics:views:identifier:":{"name":"+constraintsWithVisualFormat:options:metrics:views:identifier:","abstract":"\u003cp\u003eA missing convenience initializer allowing to tag a bunch of visual constraints with the same identifier.\u003c/p\u003e","parent_name":"NSLayoutConstraint(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(py)mmm_rect":{"name":"mmm_rect","abstract":"\u003cp\u003eA wrapper for the \u003ccode\u003ecenter\u003c/code\u003e and \u003ccode\u003ebounds.size\u003c/code\u003e properties similar to \u0026lsquo;frame\u0026rsquo;, but not taking the current transform into account. \u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(py)mmm_size":{"name":"mmm_size","abstract":"\u003cp\u003eA wrapper for the \u003ccode\u003esize\u003c/code\u003e component of \u003ccode\u003ebounds\u003c/code\u003e property.\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(py)mmm_safeAreaLayoutGuide":{"name":"mmm_safeAreaLayoutGuide","abstract":"\u003cp\u003eA safer version of \u003ccode\u003esafeAreaLayoutGuide\u003c/code\u003e that attempts to avoid layout loops happening when a view using it\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(py)mmm_safeAreaInsets":{"name":"mmm_safeAreaInsets","abstract":"\u003cp\u003eEffective \u003ccode\u003esafeAreaInsets\u003c/code\u003e as seen by \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbCategories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(py)mmm_safeAreaLayoutGuide\"\u003emmm_safeAreaLayoutGuide\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_constraintsAligningView:horizontally:vertically:insets:":{"name":"-mmm_constraintsAligningView:horizontally:vertically:insets:","abstract":"\u003cp\u003eConstraints anchoring the given view within the receiver according to horizontal and vertical alignment flags.","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_constraintsAligningView:horizontally:":{"name":"-mmm_constraintsAligningView:horizontally:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_constraintsAligningView:vertically:":{"name":"-mmm_constraintsAligningView:vertically:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_constraintsAligningGuide:horizontally:vertically:insets:":{"name":"-mmm_constraintsAligningGuide:horizontally:vertically:insets:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_addConstraintsAligningView:horizontally:vertically:insets:":{"name":"-mmm_addConstraintsAligningView:horizontally:vertically:insets:","abstract":"\u003cp\u003eAdds contraints anchoring the given view within the receiver according to horizontal and vertical alignment flags.","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_addConstraintsAligningView:horizontally:vertically:":{"name":"-mmm_addConstraintsAligningView:horizontally:vertically:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_addConstraintsAligningView:horizontally:":{"name":"-mmm_addConstraintsAligningView:horizontally:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_addConstraintsAligningView:vertically:":{"name":"-mmm_addConstraintsAligningView:vertically:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_constraintsHorizontallyCenteringView:minPadding:maxWidth:":{"name":"-mmm_constraintsHorizontallyCenteringView:minPadding:maxWidth:","abstract":"\u003cp\u003eNot yet activated constraints implementing a common layout idiom used with text:\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_addConstraintsHorizontallyCenteringView:minPadding:maxWidth:":{"name":"-mmm_addConstraintsHorizontallyCenteringView:minPadding:maxWidth:","abstract":"\u003cp\u003eA shortcut activating constraints returned by \u003ccode\u003emmm_constraintsHorizontallyCenteringView:minPadding:maxWidth:\u003c/code\u003e.\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_addConstraintsHorizontallyCenteringView:minPadding:":{"name":"-mmm_addConstraintsHorizontallyCenteringView:minPadding:","abstract":"\u003cp\u003eA shortcut activating constraints returned by \u003ccode\u003emmm_constraintsHorizontallyCenteringView:minPadding:maxWidth:\u003c/code\u003e\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_addConstraintsForSubview:horizontalAlignment:verticalAlignment:insets:":{"name":"-mmm_addConstraintsForSubview:horizontalAlignment:verticalAlignment:insets:","abstract":"\u003cp\u003eAdds constraints anchoring the given subview within the receiver according to horizontal and vertical alignment flags.","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_addConstraintsForSubview:horizontalAlignment:verticalAlignment:":{"name":"-mmm_addConstraintsForSubview:horizontalAlignment:verticalAlignment:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_addVerticalSpaceRatioConstraintsForSubview:topItem:topAttribute:bottomItem:bottomAttribute:ratio:priority:":{"name":"-mmm_addVerticalSpaceRatioConstraintsForSubview:topItem:topAttribute:bottomItem:bottomAttribute:ratio:priority:","abstract":"\u003cp\u003eAdds constraints and two hidden auxiliary views ensuring that the space between the top of the subview and","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_addVerticalSpaceRatioConstraintsForSubview:topItem:topAttribute:bottomItem:bottomAttribute:ratio:":{"name":"-mmm_addVerticalSpaceRatioConstraintsForSubview:topItem:topAttribute:bottomItem:bottomAttribute:ratio:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_addVerticalSpaceRatioConstraintsForSubview:item:attribute:ratio:":{"name":"-mmm_addVerticalSpaceRatioConstraintsForSubview:item:attribute:ratio:","abstract":"\u003cp\u003eAdds constrains and a hidden auxiliary view ensuring that specified item / attribute vertically divides","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_setVerticalCompressionResistance:":{"name":"-mmm_setVerticalCompressionResistance:","abstract":"\u003cp\u003eShortcuts for compression resistance and hugging priorities.\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_setHorizontalCompressionResistance:":{"name":"-mmm_setHorizontalCompressionResistance:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_setVerticalHuggingPriority:":{"name":"-mmm_setVerticalHuggingPriority:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_setHorizontalHuggingPriority:":{"name":"-mmm_setHorizontalHuggingPriority:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_setVerticalCompressionResistance:hugging:":{"name":"-mmm_setVerticalCompressionResistance:hugging:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_setHorizontalCompressionResistance:hugging:":{"name":"-mmm_setHorizontalCompressionResistance:hugging:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_setCompressionResistanceHorizontal:vertical:":{"name":"-mmm_setCompressionResistanceHorizontal:vertical:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_setHuggingHorizontal:vertical:":{"name":"-mmm_setHuggingHorizontal:vertical:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UILayoutGuide%28MMMTemple%29.html#/c:objc(cs)UILayoutGuide(im)initWithIdentifier:":{"name":"-initWithIdentifier:","abstract":"\u003cp\u003eConvenience initializer setting the guide\u0026rsquo;s identifier.\u003c/p\u003e","parent_name":"UILayoutGuide(MMMTemple)"},"Categories/UILayoutGuide%28MMMTemple%29.html#/c:objc(cs)UILayoutGuide(im)mmm_constraintsAligningView:horizontally:vertically:insets:":{"name":"-mmm_constraintsAligningView:horizontally:vertically:insets:","abstract":"\u003cp\u003eNot yet activated constraints anchoring the given view within the receiver according to horizontal","parent_name":"UILayoutGuide(MMMTemple)"},"Categories/UILayoutGuide%28MMMTemple%29.html#/c:objc(cs)UILayoutGuide(im)mmm_constraintsAligningGuide:horizontally:vertically:insets:":{"name":"-mmm_constraintsAligningGuide:horizontally:vertically:insets:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UILayoutGuide(MMMTemple)"},"Categories/UILayoutGuide%28MMMTemple%29.html#/c:objc(cs)UILayoutGuide(im)mmm_constraintsHorizontallyCenteringView:minPadding:maxWidth:":{"name":"-mmm_constraintsHorizontallyCenteringView:minPadding:maxWidth:","abstract":"\u003cp\u003eNot yet activated constraints implementing a common layout idiom used with text:\u003c/p\u003e","parent_name":"UILayoutGuide(MMMTemple)"},"Categories/UIView%28MMMPreferredSizeChanges%29.html#/c:objc(cs)UIView(im)mmm_setPreferredSizeCouldChange":{"name":"-mmm_setPreferredSizeCouldChange","abstract":"\u003cp\u003eSignals to one of the interested parent views (supporting \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbProtocols/MMMPreferredSizeChanges.html\"\u003eMMMPreferredSizeChanges\u003c/a\u003e\u003c/code\u003e)","parent_name":"UIView(MMMPreferredSizeChanges)"},"Categories/UIView%28MMMPreferredSizeChanges%29.html":{"name":"UIView(MMMPreferredSizeChanges)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Categories/UILayoutGuide%28MMMTemple%29.html":{"name":"UILayoutGuide(MMMTemple)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Categories/UIView%28MMMTemple%29.html":{"name":"UIView(MMMTemple)","abstract":"\u003cp\u003eA few shorthands for UIView.\u003c/p\u003e"},"Categories/NSLayoutConstraint%28MMMTemple%29.html":{"name":"NSLayoutConstraint(MMMTemple)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Categories.html":{"name":"Categories","abstract":"\u003cp\u003eThe following categories are available globally.\u003c/p\u003e"},"Classes.html":{"name":"Classes","abstract":"\u003cp\u003eThe following classes are available globally.\u003c/p\u003e"},"Constants.html":{"name":"Constants","abstract":"\u003cp\u003eThe following constants are available globally.\u003c/p\u003e"},"Enums.html":{"name":"Enumerations","abstract":"\u003cp\u003eThe following enumerations are available globally.\u003c/p\u003e"},"Protocols.html":{"name":"Protocols","abstract":"\u003cp\u003eThe following protocols are available globally.\u003c/p\u003e"},"Type%20Definitions.html":{"name":"Type Definitions","abstract":"\u003cp\u003eThe following type definitions are available globally.\u003c/p\u003e"},"Functions.html":{"name":"Functions","abstract":"\u003cp\u003eThe following functions are available globally.\u003c/p\u003e"}} \ No newline at end of file +{} \ No newline at end of file diff --git a/docsets/MMMCommonUI.docset/Contents/Resources/docSet.dsidx b/docsets/MMMCommonUI.docset/Contents/Resources/docSet.dsidx index 482919eafeb537bf68bb09f02e4f2031e287e2a3..2496b283b06b8631d0119605b96c501ede6bf926 100644 GIT binary patch delta 56 ycmZozz}Ap3L5humiGhKEd7^?H69d!6ga!O;yg)vKz;?j~#;N=h8&cW0Q278;MhtiW literal 102400 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 z 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 literal 201051 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 K#>6w@$Ajh0u<#VK#_`${O=Qxf79*w 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
@@ -326,7 +84,7 @@

Usage

diff --git a/search.json b/search.json index ef952be..9e26dfe 100644 --- a/search.json +++ b/search.json @@ -1 +1 @@ -{"Functions.html#/c:MMMLayoutUtils.h@F@MMMCenterMultiplierForRatio":{"name":"MMMCenterMultiplierForRatio","abstract":"\u003cp\u003eSuppose you need to contrain a view so its center divides its container in certain ratio different from 1:1"},"Functions.html#/c:@F@MMMReverseAnimationCurve":{"name":"MMMReverseAnimationCurve","abstract":"\u003cp\u003eAnimation curve opposite to the given one, e.g. EaseIn for EaseOut.\u003c/p\u003e"},"Functions.html#/c:MMMLayout.h@F@MMMLayoutAlignmentFromHorizontalAlignment":{"name":"MMMLayoutAlignmentFromHorizontalAlignment","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/c:MMMLayout.h@F@MMMLayoutAlignmentFromVerticalAlignment":{"name":"MMMLayoutAlignmentFromVerticalAlignment","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/c:@F@MMMDictionaryFromUIEdgeInsets":{"name":"MMMDictionaryFromUIEdgeInsets","abstract":"\u003cp\u003eA dictionary built from UIEdgeInsets suitable for AutoLayout metrics."},"Type%20Definitions.html#/c:MMMNavigation.h@T@MMMNavigationRequestId":{"name":"MMMNavigationRequestId","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Type%20Definitions.html#/c:MMMNavigation.h@T@MMMNavigationCompletionBlock":{"name":"MMMNavigationCompletionBlock","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Type%20Definitions.html#/c:MMMNavigation.h@T@MMMNavigationHandlerId":{"name":"MMMNavigationHandlerId","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Type%20Definitions.html#/c:MMMNavigationStack.h@T@MMMNavigationStackCompletion":{"name":"MMMNavigationStackCompletion","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Type%20Definitions.html#/c:MMMShadowView.h@T@MMMShadowViewSettingBlock":{"name":"MMMShadowViewSettingBlock","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Type%20Definitions.html#/c:MMMAnimations.h@T@MMMAnimatorUpdateBlock":{"name":"MMMAnimatorUpdateBlock","abstract":"\u003cp\u003eCalled on every update cycle of MMMAnimator for the given animation item.\u003c/p\u003e"},"Type%20Definitions.html#/c:MMMAnimations.h@T@MMMAnimatorDoneBlock":{"name":"MMMAnimatorDoneBlock","abstract":"\u003cp\u003eCalled when the animation item has been finished.\u003c/p\u003e"},"Protocols/MMMStylesheetConverter.html#/c:objc(pl)MMMStylesheetConverter(im)convertFloat:fromSizeClass:":{"name":"-convertFloat:fromSizeClass:","abstract":"\u003cp\u003eConverts a dimension know for certain size class according to the rules of the converter.\u003c/p\u003e","parent_name":"MMMStylesheetConverter"},"Protocols/MMMPreferredSizeChanges.html#/c:objc(pl)MMMPreferredSizeChanges(im)mmm_preferredSizeCouldChangeForSubview:":{"name":"-mmm_preferredSizeCouldChangeForSubview:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMPreferredSizeChanges"},"Protocols/MMMNavigationStackItem.html#/c:objc(pl)MMMNavigationStackItem(im)didPop":{"name":"-didPop","abstract":"\u003cp\u003eShould be called by the item\u0026rsquo;s delegate when the navigation item has been popped as a result of user\u0026rsquo;s action","parent_name":"MMMNavigationStackItem"},"Protocols/MMMNavigationStackItem.html#/c:objc(pl)MMMNavigationStackItem(im)didFailToPop":{"name":"-didFailToPop","abstract":"\u003cp\u003eShould be called by the navigation item\u0026rsquo;s delegate in rare caes when the corresponding item cannot be popped.\u003c/p\u003e","parent_name":"MMMNavigationStackItem"},"Protocols/MMMNavigationStackItem.html#/c:objc(pl)MMMNavigationStackItem(im)popAllAfterThisItemWithCompletion:":{"name":"-popAllAfterThisItemWithCompletion:","abstract":"\u003cp\u003ePops all the items currently on the stack above this item, so this one becomes the top. This is an asynchronous operation","parent_name":"MMMNavigationStackItem"},"Protocols/MMMNavigationStackItemDelegate.html#/c:objc(pl)MMMNavigationStackItemDelegate(im)popNavigationStackItem:":{"name":"-popNavigationStackItem:","abstract":"\u003cp\u003eShould perform all the work necessary to pop the corresponding UI navigation item and must call \u003ccode\u003edidPop\u003c/code\u003e method","parent_name":"MMMNavigationStackItemDelegate"},"Protocols/MMMNavigationHandler.html#/c:objc(pl)MMMNavigationHandler(im)performNavigationRequest:":{"name":"-performNavigationRequest:","abstract":"\u003cp\u003eReturns NO, in case the handler is unable to perform the given request. (Another handler will be tried then.)","parent_name":"MMMNavigationHandler"},"Protocols/MMMNavigationHandler.html":{"name":"MMMNavigationHandler","abstract":"\u003cp\u003eProtocol for entities able to fulfill in-app navigation requests.\u003c/p\u003e"},"Protocols/MMMNavigationStackItemDelegate.html":{"name":"MMMNavigationStackItemDelegate","abstract":"\u003cp\u003eThis is the delegate corresponding to each navigation item in the stack."},"Protocols/MMMNavigationStackItem.html":{"name":"MMMNavigationStackItem","abstract":"\u003cp\u003eA token corresponding to a single node (item) of the current UI navigation path."},"Protocols/MMMPreferredSizeChanges.html":{"name":"MMMPreferredSizeChanges","abstract":"\u003cp\u003eA view supporting this will be notified when one of the child views indicates potential changes in its contents"},"Protocols/MMMStylesheetConverter.html":{"name":"MMMStylesheetConverter","abstract":"\u003cp\u003eSomething that converts dimensions given for one size class (e.g. font sizes from the design made for iPhone 6)"},"Enums/MMMLayoutVerticalAlignment.html#/c:@E@MMMLayoutVerticalAlignment@MMMLayoutVerticalAlignmentNone":{"name":"MMMLayoutVerticalAlignmentNone","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutVerticalAlignment"},"Enums/MMMLayoutVerticalAlignment.html#/c:@E@MMMLayoutVerticalAlignment@MMMLayoutVerticalAlignmentTop":{"name":"MMMLayoutVerticalAlignmentTop","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutVerticalAlignment"},"Enums/MMMLayoutVerticalAlignment.html#/c:@E@MMMLayoutVerticalAlignment@MMMLayoutVerticalAlignmentGolden":{"name":"MMMLayoutVerticalAlignmentGolden","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutVerticalAlignment"},"Enums/MMMLayoutVerticalAlignment.html#/c:@E@MMMLayoutVerticalAlignment@MMMLayoutVerticalAlignmentCenter":{"name":"MMMLayoutVerticalAlignmentCenter","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutVerticalAlignment"},"Enums/MMMLayoutVerticalAlignment.html#/c:@E@MMMLayoutVerticalAlignment@MMMLayoutVerticalAlignmentBottom":{"name":"MMMLayoutVerticalAlignmentBottom","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutVerticalAlignment"},"Enums/MMMLayoutVerticalAlignment.html#/c:@E@MMMLayoutVerticalAlignment@MMMLayoutVerticalAlignmentFill":{"name":"MMMLayoutVerticalAlignmentFill","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutVerticalAlignment"},"Enums/MMMLayoutHorizontalAlignment.html#/c:@E@MMMLayoutHorizontalAlignment@MMMLayoutHorizontalAlignmentNone":{"name":"MMMLayoutHorizontalAlignmentNone","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutHorizontalAlignment"},"Enums/MMMLayoutHorizontalAlignment.html#/c:@E@MMMLayoutHorizontalAlignment@MMMLayoutHorizontalAlignmentLeft":{"name":"MMMLayoutHorizontalAlignmentLeft","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutHorizontalAlignment"},"Enums/MMMLayoutHorizontalAlignment.html#/c:@E@MMMLayoutHorizontalAlignment@MMMLayoutHorizontalAlignmentGolden":{"name":"MMMLayoutHorizontalAlignmentGolden","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutHorizontalAlignment"},"Enums/MMMLayoutHorizontalAlignment.html#/c:@E@MMMLayoutHorizontalAlignment@MMMLayoutHorizontalAlignmentCenter":{"name":"MMMLayoutHorizontalAlignmentCenter","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutHorizontalAlignment"},"Enums/MMMLayoutHorizontalAlignment.html#/c:@E@MMMLayoutHorizontalAlignment@MMMLayoutHorizontalAlignmentRight":{"name":"MMMLayoutHorizontalAlignmentRight","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutHorizontalAlignment"},"Enums/MMMLayoutHorizontalAlignment.html#/c:@E@MMMLayoutHorizontalAlignment@MMMLayoutHorizontalAlignmentFill":{"name":"MMMLayoutHorizontalAlignmentFill","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutHorizontalAlignment"},"Enums/MMMLayoutDirection.html#/c:@E@MMMLayoutDirection@MMMLayoutDirectionHorizontal":{"name":"MMMLayoutDirectionHorizontal","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutDirection"},"Enums/MMMLayoutDirection.html#/c:@E@MMMLayoutDirection@MMMLayoutDirectionVertical":{"name":"MMMLayoutDirectionVertical","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutDirection"},"Enums/MMMLayoutAlignment.html#/c:@E@MMMLayoutAlignment@MMMLayoutAlignmentNone":{"name":"MMMLayoutAlignmentNone","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutAlignment"},"Enums/MMMLayoutAlignment.html#/c:@E@MMMLayoutAlignment@MMMLayoutAlignmentLeading":{"name":"MMMLayoutAlignmentLeading","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutAlignment"},"Enums/MMMLayoutAlignment.html#/c:@E@MMMLayoutAlignment@MMMLayoutAlignmentGolden":{"name":"MMMLayoutAlignmentGolden","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutAlignment"},"Enums/MMMLayoutAlignment.html#/c:@E@MMMLayoutAlignment@MMMLayoutAlignmentCenter":{"name":"MMMLayoutAlignmentCenter","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutAlignment"},"Enums/MMMLayoutAlignment.html#/c:@E@MMMLayoutAlignment@MMMLayoutAlignmentTrailing":{"name":"MMMLayoutAlignmentTrailing","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutAlignment"},"Enums/MMMLayoutAlignment.html#/c:@E@MMMLayoutAlignment@MMMLayoutAlignmentFill":{"name":"MMMLayoutAlignmentFill","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMLayoutAlignment"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveLinear":{"name":"MMMAnimationCurveLinear","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveEaseOut":{"name":"MMMAnimationCurveEaseOut","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveEaseIn":{"name":"MMMAnimationCurveEaseIn","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveEaseInOut":{"name":"MMMAnimationCurveEaseInOut","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveSofterEaseIn":{"name":"MMMAnimationCurveSofterEaseIn","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveSofterEaseOut":{"name":"MMMAnimationCurveSofterEaseOut","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveSofterEaseInOut":{"name":"MMMAnimationCurveSofterEaseInOut","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveEaseInQuad":{"name":"MMMAnimationCurveEaseInQuad","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveEaseOutQuad":{"name":"MMMAnimationCurveEaseOutQuad","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveEaseInOutQuad":{"name":"MMMAnimationCurveEaseInOutQuad","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveEaseInCubic":{"name":"MMMAnimationCurveEaseInCubic","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveEaseOutCubic":{"name":"MMMAnimationCurveEaseOutCubic","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveEaseInOutCubic":{"name":"MMMAnimationCurveEaseInOutCubic","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveEaseInQuart":{"name":"MMMAnimationCurveEaseInQuart","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveEaseOutQuart":{"name":"MMMAnimationCurveEaseOutQuart","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveEaseInOutQuart":{"name":"MMMAnimationCurveEaseInOutQuart","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveEaseInQuint":{"name":"MMMAnimationCurveEaseInQuint","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveEaseOutQuint":{"name":"MMMAnimationCurveEaseOutQuint","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMAnimationCurve.html#/c:@E@MMMAnimationCurve@MMMAnimationCurveEaseInOutQuint":{"name":"MMMAnimationCurveEaseInOutQuint","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationCurve"},"Enums/MMMScrollViewShadowAlignment.html#/c:@E@MMMScrollViewShadowAlignment@MMMScrollViewShadowAlignmentTop":{"name":"MMMScrollViewShadowAlignmentTop","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMScrollViewShadowAlignment"},"Enums/MMMScrollViewShadowAlignment.html#/c:@E@MMMScrollViewShadowAlignment@MMMScrollViewShadowAlignmentBottom":{"name":"MMMScrollViewShadowAlignmentBottom","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMScrollViewShadowAlignment"},"Enums/MMMScrollViewShadowAlignment.html":{"name":"MMMScrollViewShadowAlignment","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Enums/MMMAnimationCurve.html":{"name":"MMMAnimationCurve","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Enums/MMMLayoutAlignment.html":{"name":"MMMLayoutAlignment","abstract":"\u003cp\u003eGeneral alignment flags used when it\u0026rsquo;s not important which direction (vertical or horizontal) the alignment is for.\u003c/p\u003e"},"Enums/MMMLayoutDirection.html":{"name":"MMMLayoutDirection","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Enums/MMMLayoutHorizontalAlignment.html":{"name":"MMMLayoutHorizontalAlignment","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Enums/MMMLayoutVerticalAlignment.html":{"name":"MMMLayoutVerticalAlignment","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Constants.html#/c:@MMMGolden":{"name":"MMMGolden","abstract":"\u003cp\u003eGolden ratio constant.\u003c/p\u003e"},"Constants.html#/c:@MMMInverseGolden":{"name":"MMMInverseGolden","abstract":"\u003cp\u003e1 divided by golden ratio.\u003c/p\u003e"},"Constants.html#/c:@MMMSizeClassic":{"name":"MMMSizeClassic","abstract":"\u003cp\u003eSmall screen phones: iPhone 4/4s/5/5s/SE.\u003c/p\u003e"},"Constants.html#/c:@MMMSize6":{"name":"MMMSize6","abstract":"\u003cp\u003eRegular phones: iPhone 6/6s/7/8 and X as well.\u003c/p\u003e"},"Constants.html#/c:@MMMSize6Plus":{"name":"MMMSize6Plus","abstract":"\u003cp\u003ePluse-sized phones: iPhone 6/7/8 Plus.\u003c/p\u003e"},"Constants.html#/c:@MMMSizePad":{"name":"MMMSizePad","abstract":"\u003cp\u003eiPads: regular and pros.\u003c/p\u003e"},"Constants.html#/c:@MMMSizeRest":{"name":"MMMSizeRest","abstract":"\u003cp\u003eNot the actual size class, but can be used as a key \u003ccode\u003evalueForCurrentSizeClass:\u003c/code\u003e and related methods for a fallback value.\u003c/p\u003e"},"Classes/MMMStylesheetScaleConverter.html#/c:objc(cs)MMMStylesheetScaleConverter(im)initWithScales:":{"name":"-initWithScales:","abstract":"\u003cp\u003eInitializes the converter with an explicit table of scales.","parent_name":"MMMStylesheetScaleConverter"},"Classes/MMMStylesheetScaleConverter.html#/c:objc(cs)MMMStylesheetScaleConverter(im)initWithTargetSizeClass:dimensions:":{"name":"-initWithTargetSizeClass:dimensions:","abstract":"\u003cp\u003eInitializes the converter with a target size class and a table of dimensions associated with every size class","parent_name":"MMMStylesheetScaleConverter"},"Classes/MMMStylesheetScaleConverter.html#/c:objc(cs)MMMStylesheetScaleConverter(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStylesheetScaleConverter"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(py)currentSizeClass":{"name":"currentSizeClass","abstract":"\u003cp\u003eThe size class of the current device. See the MMSize* string constants below.\u003c/p\u003e","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(im)valueForCurrentSizeClass:":{"name":"-valueForCurrentSizeClass:","abstract":"\u003cp\u003eAllows to avoid code that picks values (fonts, sizes, etc) by explicitely matching \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbClasses/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(py)currentSizeClass\"\u003ecurrentSizeClass\u003c/a\u003e\u003c/code\u003e.","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(im)floatForCurrentSizeClass:":{"name":"-floatForCurrentSizeClass:","abstract":"\u003cp\u003eA version of \u003ccode\u003evalueForCurrentSizeClass:\u003c/code\u003e unwrapping the result as a float, which is handy for numeric values.\u003c/p\u003e","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(im)extrapolatedFloatForCurrentSizeClass:":{"name":"-extrapolatedFloatForCurrentSizeClass:","abstract":"\u003cp\u003eDeprecated.","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(im)extrapolatedFloatForCurrentSizeClass:except:":{"name":"-extrapolatedFloatForCurrentSizeClass:except:","abstract":"\u003cp\u003eDeprecated.","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(py)widthBasedConverter":{"name":"widthBasedConverter","abstract":"\u003cp\u003eConverts dimensions given for one size class into dimensions suitable for the current size class","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(py)extraExtraSmallPadding":{"name":"extraExtraSmallPadding","abstract":"\u003cp\u003eA standard set of paddings.","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(py)extraSmallPadding":{"name":"extraSmallPadding","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(py)smallPadding":{"name":"smallPadding","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(py)normalPadding":{"name":"normalPadding","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(py)largePadding":{"name":"largePadding","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(py)extraLargePadding":{"name":"extraLargePadding","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(im)insetsFromRelativeInsets:":{"name":"-insetsFromRelativeInsets:","abstract":"\u003cp\u003eActual insets from relative ones.\u003c/p\u003e","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(im)paddingFromRelativePadding:":{"name":"-paddingFromRelativePadding:","abstract":"\u003cp\u003eThis is what \u003ccode\u003einsetsFromRelativeInsets:\u003c/code\u003e is using internally. Might be useful when making similar methods.\u003c/p\u003e","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(im)dictionaryWithPaddings":{"name":"-dictionaryWithPaddings","abstract":"\u003cp\u003eA metrics dictionary that can be used with Auto Layout with keys/values corresponding to all the paddings we support,","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(im)dictionaryFromRelativeInsets:keyPrefix:":{"name":"-dictionaryFromRelativeInsets:keyPrefix:","abstract":"\u003cp\u003eA dictionary with 4 values under keys \u0026ldquo;\u003ckeyPrefix\u003eTop\u0026rdquo;, \u0026ldquo;\u003ckeyPrefix\u003eBottom\u0026rdquo;, \u0026ldquo;\u003ckeyPrefix\u003eLeft\u0026rdquo;, \u0026ldquo;\u003ckeyPrefix\u003eRight\u0026rdquo;","parent_name":"MMMStylesheet"},"Classes/MMMStylesheet.html#/c:objc(cs)MMMStylesheet(im)paddingDictionaryFromRelativeInsets:":{"name":"-paddingDictionaryFromRelativeInsets:","abstract":"\u003cp\u003eA dictionary with 4 values obtained from the insets returned by \u003ccode\u003einsetsFromRelativeInsets:insets\u003c/code\u003e","parent_name":"MMMStylesheet"},"Classes/MMMVerticalGradientView.html#/c:objc(cs)MMMVerticalGradientView(im)initWithTopColor:bottomColor:curve:":{"name":"-initWithTopColor:bottomColor:curve:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMVerticalGradientView"},"Classes/MMMVerticalGradientView.html#/c:objc(cs)MMMVerticalGradientView(im)initWithTopColor:bottomColor:":{"name":"-initWithTopColor:bottomColor:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMVerticalGradientView"},"Classes/MMMVerticalGradientView.html#/c:objc(cs)MMMVerticalGradientView(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMVerticalGradientView"},"Classes/MMMVerticalGradientView.html#/c:objc(cs)MMMVerticalGradientView(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMVerticalGradientView"},"Classes/MMMVerticalGradientView.html#/c:objc(cs)MMMVerticalGradientView(im)initWithFrame:":{"name":"-initWithFrame:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMVerticalGradientView"},"Classes/MMMPaddedView.html#/c:objc(cs)MMMPaddedView(py)view":{"name":"view","abstract":"\u003cp\u003eThe view being wrapped.\u003c/p\u003e","parent_name":"MMMPaddedView"},"Classes/MMMPaddedView.html#/c:objc(cs)MMMPaddedView(py)insets":{"name":"insets","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMPaddedView"},"Classes/MMMPaddedView.html#/c:objc(cs)MMMPaddedView(im)initWithView:insets:":{"name":"-initWithView:insets:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMPaddedView"},"Classes/MMMPaddedView.html#/c:objc(cs)MMMPaddedView(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMPaddedView"},"Classes/MMMPaddedView.html#/c:objc(cs)MMMPaddedView(im)initWithFrame:":{"name":"-initWithFrame:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMPaddedView"},"Classes/MMMPaddedView.html#/c:objc(cs)MMMPaddedView(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMPaddedView"},"Classes/MMMAutoLayoutIsolator.html#/c:objc(cs)MMMAutoLayoutIsolator(py)view":{"name":"view","abstract":"\u003cp\u003eThe view being wrapped.\u003c/p\u003e","parent_name":"MMMAutoLayoutIsolator"},"Classes/MMMAutoLayoutIsolator.html#/c:objc(cs)MMMAutoLayoutIsolator(im)initWithView:":{"name":"-initWithView:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAutoLayoutIsolator"},"Classes/MMMAutoLayoutIsolator.html#/c:objc(cs)MMMAutoLayoutIsolator(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAutoLayoutIsolator"},"Classes/MMMAutoLayoutIsolator.html#/c:objc(cs)MMMAutoLayoutIsolator(im)initWithFrame:":{"name":"-initWithFrame:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAutoLayoutIsolator"},"Classes/MMMAutoLayoutIsolator.html#/c:objc(cs)MMMAutoLayoutIsolator(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAutoLayoutIsolator"},"Classes/MMMHorizontalStackContainer.html#/c:objc(cs)MMMHorizontalStackContainer(im)initWithInsets:alignment:spacing:":{"name":"-initWithInsets:alignment:spacing:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMHorizontalStackContainer"},"Classes/MMMHorizontalStackContainer.html#/c:objc(cs)MMMHorizontalStackContainer(im)initWithDirection:insets:alignment:spacing:":{"name":"-initWithDirection:insets:alignment:spacing:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMHorizontalStackContainer"},"Classes/MMMVerticalStackContainer.html#/c:objc(cs)MMMVerticalStackContainer(im)initWithInsets:alignment:spacing:":{"name":"-initWithInsets:alignment:spacing:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMVerticalStackContainer"},"Classes/MMMVerticalStackContainer.html#/c:objc(cs)MMMVerticalStackContainer(im)initWithDirection:insets:alignment:spacing:":{"name":"-initWithDirection:insets:alignment:spacing:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMVerticalStackContainer"},"Classes/MMMStackContainer.html#/c:objc(cs)MMMStackContainer(im)setSubviews:":{"name":"-setSubviews:","abstract":"\u003cp\u003eSets subviews to be laid out. Previously set subviews will be removed from this container first.\u003c/p\u003e","parent_name":"MMMStackContainer"},"Classes/MMMStackContainer.html#/c:objc(cs)MMMStackContainer(im)initWithDirection:insets:alignment:spacing:":{"name":"-initWithDirection:insets:alignment:spacing:","abstract":"\u003cp\u003eInsets define the padding around all the subviews.","parent_name":"MMMStackContainer"},"Classes/MMMStackContainer.html#/c:objc(cs)MMMStackContainer(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStackContainer"},"Classes/MMMStackContainer.html#/c:objc(cs)MMMStackContainer(im)initWithFrame:":{"name":"-initWithFrame:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStackContainer"},"Classes/MMMStackContainer.html#/c:objc(cs)MMMStackContainer(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStackContainer"},"Classes/MMMSpacerView.html#/c:objc(cs)MMMSpacerView(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMSpacerView"},"Classes/MMMSpacerView.html#/c:objc(cs)MMMSpacerView(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMSpacerView"},"Classes/MMMSpacerView.html#/c:objc(cs)MMMSpacerView(im)initWithFrame:":{"name":"-initWithFrame:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMSpacerView"},"Classes/MMMCollectionView.html#/c:objc(cs)MMMCollectionView(im)initWithSettings:":{"name":"-initWithSettings:","abstract":"\u003cp\u003eUses UICollectionViewFlowLayout by default.\u003c/p\u003e","parent_name":"MMMCollectionView"},"Classes/MMMCollectionView.html#/c:objc(cs)MMMCollectionView(im)initWithFrame:collectionViewLayout:":{"name":"-initWithFrame:collectionViewLayout:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMCollectionView"},"Classes/MMMCollectionView.html#/c:objc(cs)MMMCollectionView(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMCollectionView"},"Classes/MMMCollectionView.html#/c:objc(cs)MMMCollectionView(im)initWithFrame:":{"name":"-initWithFrame:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMCollectionView"},"Classes/MMMCollectionView.html#/c:objc(cs)MMMCollectionView(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMCollectionView"},"Classes/MMMAnimationHandle.html#/c:objc(cs)MMMAnimationHandle(py)inProgress":{"name":"inProgress","abstract":"\u003cp\u003eYES, if the animation has not been finished yet.\u003c/p\u003e","parent_name":"MMMAnimationHandle"},"Classes/MMMAnimationHandle.html#/c:objc(cs)MMMAnimationHandle(im)cancel":{"name":"-cancel","abstract":"\u003cp\u003eFinishes animation before its designated end time.\u003c/p\u003e","parent_name":"MMMAnimationHandle"},"Classes/MMMAnimationHandle.html#/c:objc(cs)MMMAnimationHandle(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimationHandle"},"Classes/MMMAnimator.html#/c:objc(cs)MMMAnimator(cm)shared":{"name":"+shared","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimator"},"Classes/MMMAnimator.html#/c:objc(cs)MMMAnimator(im)addAnimationWithDuration:updateBlock:doneBlock:":{"name":"-addAnimationWithDuration:updateBlock:doneBlock:","abstract":"\u003cp\u003eSchedules a new animation item.\u003c/p\u003e","parent_name":"MMMAnimator"},"Classes/MMMAnimator.html#/c:objc(cs)MMMAnimator(im)addAnimationWithDuration:repeatCount:autoreverse:updateBlock:doneBlock:":{"name":"-addAnimationWithDuration:repeatCount:autoreverse:updateBlock:doneBlock:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAnimator"},"Classes/MMMAnimator.html#/c:objc(cs)MMMAnimator(im)init":{"name":"-init","abstract":"\u003cp\u003eDespite the +shared method defined above you can still create own instances of this class.\u003c/p\u003e","parent_name":"MMMAnimator"},"Classes/MMMAnimator.html#/c:objc(cs)MMMAnimator(im)_testRunInNumberOfSteps:animations:forEachStep:":{"name":"-_testRunInNumberOfSteps:animations:forEachStep:","abstract":"\u003cp\u003eFor unit tests only: will synchronously run all the animations already in the animator and the ones added within","parent_name":"MMMAnimator"},"Classes/MMMAnimation.html#/c:objc(cs)MMMAnimation(cm)curvedTimeForTime:curve:":{"name":"+curvedTimeForTime:curve:","abstract":"\u003cp\u003eTime obtained by curving the given normalized time (from [0; 1] range).\u003c/p\u003e","parent_name":"MMMAnimation"},"Classes/MMMAnimation.html#/c:objc(cs)MMMAnimation(cm)timeForCurvedTime:curve:":{"name":"+timeForCurvedTime:curve:","abstract":"\u003cp\u003eInverse function for curvedTimeForTime:curve:, i.e. when we know the value returned by curvedTimeForTime:curve:","parent_name":"MMMAnimation"},"Classes/MMMAnimation.html#/c:objc(cs)MMMAnimation(cm)curvedTimeForTime:startTime:duration:curve:":{"name":"+curvedTimeForTime:startTime:duration:curve:","abstract":"\u003cp\u003eTime obtained by clamping the given time into [startTime; startTime + duration], normalizing to [0; 1] range,","parent_name":"MMMAnimation"},"Classes/MMMAnimation.html#/c:objc(cs)MMMAnimation(cm)interpolateFrom:to:time:":{"name":"+interpolateFrom:to:time:","abstract":"\u003cp\u003eA float between \u0026lsquo;from\u0026rsquo; and \u0026lsquo;to\u0026rsquo; corresponding to already normalized and curved time.\u003c/p\u003e","parent_name":"MMMAnimation"},"Classes/MMMAnimation.html#/c:objc(cs)MMMAnimation(cm)interpolateFrom:to:curvedTime:":{"name":"+interpolateFrom:to:curvedTime:","abstract":"\u003cp\u003eThis has been renamed. Use the version above.\u003c/p\u003e","parent_name":"MMMAnimation"},"Classes/MMMAnimation.html#/c:objc(cs)MMMAnimation(cm)interpolateFrom:to:time:startTime:duration:curve:":{"name":"+interpolateFrom:to:time:startTime:duration:curve:","abstract":"\u003cp\u003eValue between two floats corresponding to the given time and timing curve.","parent_name":"MMMAnimation"},"Classes/MMMAnimation.html#/c:objc(cs)MMMAnimation(cm)colorFrom:to:time:":{"name":"+colorFrom:to:time:","abstract":"\u003cp\u003eA color between \u0026lsquo;from\u0026rsquo; and \u0026lsquo;to\u0026rsquo; corresponding to already normalized and curved time.","parent_name":"MMMAnimation"},"Classes/MMMAnimation.html#/c:objc(cs)MMMAnimation(cm)pointFrom:to:time:":{"name":"+pointFrom:to:time:","abstract":"\u003cp\u003eA point on the line between given points corresponding to already normalized and curved time.\u003c/p\u003e","parent_name":"MMMAnimation"},"Classes/MMMVelocityMeter.html#/c:objc(cs)MMMVelocityMeter(im)reset":{"name":"-reset","abstract":"\u003cp\u003eResets the state of the meter, all values added before are forgotten.\u003c/p\u003e","parent_name":"MMMVelocityMeter"},"Classes/MMMVelocityMeter.html#/c:objc(cs)MMMVelocityMeter(im)addValue:timestamp:":{"name":"-addValue:timestamp:","abstract":"\u003cp\u003eAdds a coordinate and a corresponding timestamp.\u003c/p\u003e","parent_name":"MMMVelocityMeter"},"Classes/MMMVelocityMeter.html#/c:objc(cs)MMMVelocityMeter(im)addValue:":{"name":"-addValue:","abstract":"\u003cp\u003eAdds a coordinate with the current timstamp.\u003c/p\u003e","parent_name":"MMMVelocityMeter"},"Classes/MMMVelocityMeter.html#/c:objc(cs)MMMVelocityMeter(im)calculateVelocity:acceleration:":{"name":"-calculateVelocity:acceleration:","abstract":"\u003cp\u003eCalculates velocity and acceleration based on recently added values.\u003c/p\u003e","parent_name":"MMMVelocityMeter"},"Classes/MMMLayoutUtils.html#/c:objc(cs)MMMLayoutUtils(cm)rectWithSize:anchor:withinRect:anchor:":{"name":"+rectWithSize:anchor:withinRect:anchor:","abstract":"\u003cp\u003eA rect with the given size positioned inside of the target rect in such a way that anchor points of both rects align.\u003c/p\u003e","parent_name":"MMMLayoutUtils"},"Classes/MMMLayoutUtils.html#/c:objc(cs)MMMLayoutUtils(cm)rectWithSize:withinRect:anchor:":{"name":"+rectWithSize:withinRect:anchor:","abstract":"\u003cp\u003eA shortcut for the above method with anchors being the same for both source and target rect.","parent_name":"MMMLayoutUtils"},"Classes/MMMLayoutUtils.html#/c:objc(cs)MMMLayoutUtils(cm)rectWithSize:withinRect:contentMode:":{"name":"+rectWithSize:withinRect:contentMode:","abstract":"\u003cp\u003eA frame for the \u003ccode\u003esourceRect\u003c/code\u003e positioned within the \u003ccode\u003etargetRect\u003c/code\u003e according to standard \u003ccode\u003eUIViewContentMode\u003c/code\u003e flags","parent_name":"MMMLayoutUtils"},"Classes/MMMLayoutUtils.html#/c:objc(cs)MMMLayoutUtils(cm)rectWithSize:atPoint:anchor:":{"name":"+rectWithSize:atPoint:anchor:","abstract":"\u003cp\u003eA frame of the given size with its center at the specified point (assuming the center is defined by the given anchor","parent_name":"MMMLayoutUtils"},"Classes/MMMLayoutUtils.html#/c:objc(cs)MMMLayoutUtils(cm)rectWithSize:center:":{"name":"+rectWithSize:center:","abstract":"\u003cp\u003eSame as rectWithSize:center:anchor: with anchor set to (0.5, 0.5).\u003c/p\u003e","parent_name":"MMMLayoutUtils"},"Classes/MMMContainerView.html#/c:objc(cs)MMMContainerView(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMContainerView"},"Classes/MMMContainerView.html#/c:objc(cs)MMMContainerView(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMContainerView"},"Classes/MMMContainerView.html#/c:objc(cs)MMMContainerView(im)initWithFrame:":{"name":"-initWithFrame:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMContainerView"},"Classes/MMMShadowView.html#/c:objc(cs)MMMShadowView(py)contentView":{"name":"contentView","abstract":"\u003cp\u003eView that can accepts and lay out subviews.\u003c/p\u003e","parent_name":"MMMShadowView"},"Classes/MMMShadowView.html#/c:objc(cs)MMMShadowView(py)settings":{"name":"settings","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMShadowView"},"Classes/MMMShadowView.html#/c:objc(cs)MMMShadowView(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMShadowView"},"Classes/MMMShadowView.html#/c:objc(cs)MMMShadowView(im)initWithSettings:":{"name":"-initWithSettings:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMShadowView"},"Classes/MMMShadowView.html#/c:objc(cs)MMMShadowView(im)initWithFrame:":{"name":"-initWithFrame:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMShadowView"},"Classes/MMMShadowView.html#/c:objc(cs)MMMShadowView(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMShadowView"},"Classes/MMMShadowViewSetting.html#/c:objc(cs)MMMShadowViewSetting(py)color":{"name":"color","abstract":"\u003cp\u003eDefault is black color.\u003c/p\u003e","parent_name":"MMMShadowViewSetting"},"Classes/MMMShadowViewSetting.html#/c:objc(cs)MMMShadowViewSetting(py)opacity":{"name":"opacity","abstract":"\u003cp\u003eDefault is 0.\u003c/p\u003e","parent_name":"MMMShadowViewSetting"},"Classes/MMMShadowViewSetting.html#/c:objc(cs)MMMShadowViewSetting(py)offset":{"name":"offset","abstract":"\u003cp\u003eDefault is zero.\u003c/p\u003e","parent_name":"MMMShadowViewSetting"},"Classes/MMMShadowViewSetting.html#/c:objc(cs)MMMShadowViewSetting(py)radius":{"name":"radius","abstract":"\u003cp\u003eDefault is 0.\u003c/p\u003e","parent_name":"MMMShadowViewSetting"},"Classes/MMMShadowViewSetting.html#/c:objc(cs)MMMShadowViewSetting(py)insets":{"name":"insets","abstract":"\u003cp\u003eDefault is zero.\u003c/p\u003e","parent_name":"MMMShadowViewSetting"},"Classes/MMMShadowViewSetting.html#/c:objc(cs)MMMShadowViewSetting(py)backgroundColor":{"name":"backgroundColor","abstract":"\u003cp\u003eDefault is white color.\u003c/p\u003e","parent_name":"MMMShadowViewSetting"},"Classes/MMMShadowViewSetting.html#/c:objc(cs)MMMShadowViewSetting(py)cornerRadius":{"name":"cornerRadius","abstract":"\u003cp\u003eDefault is 0.\u003c/p\u003e","parent_name":"MMMShadowViewSetting"},"Classes/MMMShadowViewSetting.html#/c:objc(cs)MMMShadowViewSetting(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMShadowViewSetting"},"Classes/MMMShadowViewSetting.html#/c:objc(cs)MMMShadowViewSetting(im)initWithBlock:":{"name":"-initWithBlock:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMShadowViewSetting"},"Classes/MMMTableView.html#/c:objc(cs)MMMTableView(im)initWithSettings:style:":{"name":"-initWithSettings:style:","parent_name":"MMMTableView"},"Classes/MMMTableView.html#/c:objc(cs)MMMTableView(im)initWithSettings:":{"name":"-initWithSettings:","abstract":"\u003cp\u003eNote that UITableViewStylePlain is used.\u003c/p\u003e","parent_name":"MMMTableView"},"Classes/MMMTableView.html#/c:objc(cs)MMMTableView(im)initWithFrame:style:":{"name":"-initWithFrame:style:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMTableView"},"Classes/MMMTableView.html#/c:objc(cs)MMMTableView(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMTableView"},"Classes/MMMTableView.html#/c:objc(cs)MMMTableView(im)initWithFrame:":{"name":"-initWithFrame:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMTableView"},"Classes/MMMTableView.html#/c:objc(cs)MMMTableView(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMTableView"},"Classes/MMMTableView.html#/c:objc(cs)MMMTableView(py)shouldHandlePotentialCellSizeChanges":{"name":"shouldHandlePotentialCellSizeChanges","abstract":"\u003cp\u003eWhen enabled, then \u003ccode\u003ereloadData\u003c/code\u003e is automatically called whenever any of the cells report potential size","parent_name":"MMMTableView"},"Classes/MMMNavigationStack.html#/c:objc(cs)MMMNavigationStack(cm)shared":{"name":"+shared","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMNavigationStack"},"Classes/MMMNavigationStack.html#/c:objc(cs)MMMNavigationStack(im)pushItemWithName:delegate:controller:":{"name":"-pushItemWithName:delegate:controller:","abstract":"\u003cp\u003eNotifies the stack about a new modal navigation context facing the user now, such as a modal view controller being presented or","parent_name":"MMMNavigationStack"},"Classes/MMMNavigationStack.html#/c:objc(cs)MMMNavigationStack(im)popAllAfterController:completion:":{"name":"-popAllAfterController:completion:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMNavigationStack"},"Classes/MMMStubView.html#/c:objc(cs)MMMStubView(im)initWithText:index:":{"name":"-initWithText:index:","abstract":"\u003cp\u003eThe text is optional, the index influences the background color.\u003c/p\u003e","parent_name":"MMMStubView"},"Classes/MMMStubView.html#/c:objc(cs)MMMStubView(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStubView"},"Classes/MMMStubView.html#/c:objc(cs)MMMStubView(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStubView"},"Classes/MMMStubView.html#/c:objc(cs)MMMStubView(im)initWithFrame:":{"name":"-initWithFrame:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStubView"},"Classes/MMMAutoLayoutScrollView.html#/c:objc(cs)MMMAutoLayoutScrollView(py)contentView":{"name":"contentView","abstract":"\u003cp\u003eThis is where your content subviews should be added.\u003c/p\u003e","parent_name":"MMMAutoLayoutScrollView"},"Classes/MMMAutoLayoutScrollView.html#/c:objc(cs)MMMAutoLayoutScrollView(im)initWithSettings:":{"name":"-initWithSettings:","abstract":"\u003cp\u003eInitializes with the given config.\u003c/p\u003e","parent_name":"MMMAutoLayoutScrollView"},"Classes/MMMAutoLayoutScrollView.html#/c:objc(cs)MMMAutoLayoutScrollView(im)init":{"name":"-init","abstract":"\u003cp\u003eInitializes with default settings, a shortcut for \u003ccode\u003einitWithSettings:[[MMMScrollViewShadowsSettings alloc] init]\u003c/code\u003e.\u003c/p\u003e","parent_name":"MMMAutoLayoutScrollView"},"Classes/MMMAutoLayoutScrollView.html#/c:objc(cs)MMMAutoLayoutScrollView(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAutoLayoutScrollView"},"Classes/MMMAutoLayoutScrollView.html#/c:objc(cs)MMMAutoLayoutScrollView(im)initWithFrame:":{"name":"-initWithFrame:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMAutoLayoutScrollView"},"Classes/MMMImageView.html#/c:objc(cs)MMMImageView(py)image":{"name":"image","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMImageView"},"Classes/MMMImageView.html#/c:objc(cs)MMMImageView(py)highlightedImage":{"name":"highlightedImage","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMImageView"},"Classes/MMMImageView.html#/c:objc(cs)MMMImageView(py)highlighted":{"name":"highlighted","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMImageView"},"Classes/MMMImageView.html#/c:objc(cs)MMMImageView(im)initWithImage:highlightedImage:":{"name":"-initWithImage:highlightedImage:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMImageView"},"Classes/MMMImageView.html#/c:objc(cs)MMMImageView(im)init":{"name":"-init","abstract":"\u003cp\u003eConvenience initializer.\u003c/p\u003e","parent_name":"MMMImageView"},"Classes/MMMImageView.html#/c:objc(cs)MMMImageView(im)initWithImage:":{"name":"-initWithImage:","abstract":"\u003cp\u003eConvenience initializer.\u003c/p\u003e","parent_name":"MMMImageView"},"Classes/MMMImageView.html#/c:objc(cs)MMMImageView(im)initWithFrame:":{"name":"-initWithFrame:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMImageView"},"Classes/MMMImageView.html#/c:objc(cs)MMMImageView(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMImageView"},"Classes/MMMStubViewController.html#/c:objc(cs)MMMStubViewController(im)initWithText:index:":{"name":"-initWithText:index:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStubViewController"},"Classes/MMMStubViewController.html#/c:objc(cs)MMMStubViewController(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStubViewController"},"Classes/MMMStubViewController.html#/c:objc(cs)MMMStubViewController(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStubViewController"},"Classes/MMMStubViewController.html#/c:objc(cs)MMMStubViewController(im)initWithNibName:bundle:":{"name":"-initWithNibName:bundle:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMStubViewController"},"Classes/MMMNavigationRequest.html#/c:objc(cs)MMMNavigationRequest(py)originalPath":{"name":"originalPath","abstract":"\u003cp\u003eA sequence of hops the request has started with. This is never changed during lifetime of the request.\u003c/p\u003e","parent_name":"MMMNavigationRequest"},"Classes/MMMNavigationRequest.html#/c:objc(cs)MMMNavigationRequest(py)path":{"name":"path","abstract":"\u003cp\u003eThe current sequence of hops to follow. Handlers can adjust this.\u003c/p\u003e","parent_name":"MMMNavigationRequest"},"Classes/MMMNavigationRequest.html#/c:objc(cs)MMMNavigationRequest(im)didFinishSuccessfully:":{"name":"-didFinishSuccessfully:","abstract":"\u003cp\u003eCalled by the handler when all the hops in the path were followed through.\u003c/p\u003e","parent_name":"MMMNavigationRequest"},"Classes/MMMNavigationRequest.html#/c:objc(cs)MMMNavigationRequest(im)continueWithPath:handler:":{"name":"-continueWithPath:handler:","abstract":"\u003cp\u003eCalled by the handler to indicate that the sequence of hops (possibly changed) should be continued by another handler.","parent_name":"MMMNavigationRequest"},"Classes/MMMNavigation.html#/c:objc(cs)MMMNavigation(cm)root":{"name":"+root","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMNavigation"},"Classes/MMMNavigation.html#/c:objc(cs)MMMNavigation(im)navigateTo:completion:":{"name":"-navigateTo:completion:","abstract":"\u003cp\u003eStarts the process of opening of the given path. Calls the completion block when done, the block receives ID of the","parent_name":"MMMNavigation"},"Classes/MMMNavigation.html#/c:objc(cs)MMMNavigation(im)addHandler:":{"name":"-addHandler:","abstract":"\u003cp\u003eAdds a handler and returns a cookie/ID object that can be later used to remove it.\u003c/p\u003e","parent_name":"MMMNavigation"},"Classes/MMMNavigation.html#/c:objc(cs)MMMNavigation(im)removeHandlerWithId:":{"name":"-removeHandlerWithId:","abstract":"\u003cp\u003eRemoves a handler by its ID assigned by addHandler.\u003c/p\u003e","parent_name":"MMMNavigation"},"Classes/MMMNavigationPath.html#/c:objc(cs)MMMNavigationPath(py)hops":{"name":"hops","abstract":"\u003cp\u003eAll the \u0026ldquo;hops\u0026rdquo; the link consists of.\u003c/p\u003e","parent_name":"MMMNavigationPath"},"Classes/MMMNavigationPath.html#/c:objc(cs)MMMNavigationPath(im)pathWithoutFirstHop":{"name":"-pathWithoutFirstHop","abstract":"\u003cp\u003eA new path obtained from the current one by removing the first hop.\u003c/p\u003e","parent_name":"MMMNavigationPath"},"Classes/MMMNavigationPath.html#/c:objc(cs)MMMNavigationPath(im)firstHop":{"name":"-firstHop","abstract":"\u003cp\u003eThe first hop in the path or nil if the path is empty.\u003c/p\u003e","parent_name":"MMMNavigationPath"},"Classes/MMMNavigationPath.html#/c:objc(cs)MMMNavigationPath(im)initWithHops:":{"name":"-initWithHops:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMNavigationPath"},"Classes/MMMNavigationPath.html#/c:objc(cs)MMMNavigationPath(im)initWithURI:":{"name":"-initWithURI:","abstract":"\u003cp\u003eConvenience initializer. Allows to use URIs like \u0026ldquo;main/recipes\u0026rdquo;, to construct hops out of it.","parent_name":"MMMNavigationPath"},"Classes/MMMNavigationPath.html#/c:objc(cs)MMMNavigationPath(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMNavigationPath"},"Classes/MMMNavigationHop.html#/c:objc(cs)MMMNavigationHop(py)action":{"name":"action","abstract":"\u003cp\u003eName/ID of the hop. Supposed to be a flat string, like \u0026lsquo;recipes\u0026rsquo;, not a path.\u003c/p\u003e","parent_name":"MMMNavigationHop"},"Classes/MMMNavigationHop.html#/c:objc(cs)MMMNavigationHop(py)params":{"name":"params","abstract":"\u003cp\u003eOptional parameters for this hop only.\u003c/p\u003e","parent_name":"MMMNavigationHop"},"Classes/MMMNavigationHop.html#/c:objc(cs)MMMNavigationHop(im)initWithAction:params:":{"name":"-initWithAction:params:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMNavigationHop"},"Classes/MMMNavigationHop.html#/c:objc(cs)MMMNavigationHop(im)initWithAction:":{"name":"-initWithAction:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMNavigationHop"},"Classes/MMMNavigationHop.html#/c:objc(cs)MMMNavigationHop(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMNavigationHop"},"Classes/MMMViewWrappingCell.html#/c:objc(cs)MMMViewWrappingCell(py)wrappedView":{"name":"wrappedView","abstract":"\u003cp\u003eThe view this cell wraps. It is added into the \u003ccode\u003econtentView\u003c/code\u003e and is laid out to fully fill it.\u003c/p\u003e","parent_name":"MMMViewWrappingCell"},"Classes/MMMViewWrappingCell.html#/c:objc(cs)MMMViewWrappingCell(im)initWithView:reuseIdentifier:":{"name":"-initWithView:reuseIdentifier:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMViewWrappingCell"},"Classes/MMMViewWrappingCell.html#/c:objc(cs)MMMViewWrappingCell(im)initWithView:reuseIdentifier:inset:":{"name":"-initWithView:reuseIdentifier:inset:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMViewWrappingCell"},"Classes/MMMViewWrappingCell.html#/c:objc(cs)MMMViewWrappingCell(im)initWithReuseIdentifier:":{"name":"-initWithReuseIdentifier:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMViewWrappingCell"},"Classes/MMMTableViewCell.html#/c:objc(cs)MMMTableViewCell(im)initWithReuseIdentifier:":{"name":"-initWithReuseIdentifier:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMTableViewCell"},"Classes/MMMTableViewCell.html#/c:objc(cs)MMMTableViewCell(im)initWithStyle:reuseIdentifier:":{"name":"-initWithStyle:reuseIdentifier:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMTableViewCell"},"Classes/MMMTableViewCell.html#/c:objc(cs)MMMTableViewCell(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMTableViewCell"},"Classes/MMMTableViewCell.html#/c:objc(cs)MMMTableViewCell(im)initWithFrame:":{"name":"-initWithFrame:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMTableViewCell"},"Classes/MMMTableViewCell.html#/c:objc(cs)MMMTableViewCell(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMTableViewCell"},"Classes/MMMWebView.html#/c:objc(cs)MMMWebView(im)initWithSettings:":{"name":"-initWithSettings:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMWebView"},"Classes/MMMWebView.html#/c:objc(cs)MMMWebView(im)initWithSettings:configuration:":{"name":"-initWithSettings:configuration:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMWebView"},"Classes/MMMWebView.html#/c:objc(cs)MMMWebView(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMWebView"},"Classes/MMMWebView.html#/c:objc(cs)MMMWebView(im)initWithFrame:":{"name":"-initWithFrame:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMWebView"},"Classes/MMMWebView.html#/c:objc(cs)MMMWebView(im)initWithFrame:configuration:":{"name":"-initWithFrame:configuration:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMWebView"},"Classes/MMMWebView.html#/c:objc(cs)MMMWebView(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMWebView"},"Classes/MMMScrollViewShadowView.html#/c:objc(cs)MMMScrollViewShadowView(im)initWithAlignment:settings:":{"name":"-initWithAlignment:settings:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMScrollViewShadowView"},"Classes/MMMScrollViewShadowView.html#/c:objc(cs)MMMScrollViewShadowView(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMScrollViewShadowView"},"Classes/MMMScrollViewShadowView.html#/c:objc(cs)MMMScrollViewShadowView(im)initWithCoder:":{"name":"-initWithCoder:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMScrollViewShadowView"},"Classes/MMMScrollViewShadowView.html#/c:objc(cs)MMMScrollViewShadowView(im)initWithFrame:":{"name":"-initWithFrame:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMScrollViewShadowView"},"Classes/MMMScrollViewShadowsSettings.html#/c:objc(cs)MMMScrollViewShadowsSettings(py)shadowAlpha":{"name":"shadowAlpha","abstract":"\u003cp\u003eThe base shadow color is black with this amount of transparency applied to it.\u003c/p\u003e","parent_name":"MMMScrollViewShadowsSettings"},"Classes/MMMScrollViewShadowsSettings.html#/c:objc(cs)MMMScrollViewShadowsSettings(py)shadowColor":{"name":"shadowColor","abstract":"\u003cp\u003eThe base shadow color, ensure this is an RGB color. Note that the alpha channel is ignored, use \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbClasses/MMMScrollViewShadowsSettings.html#/c:objc(cs)MMMScrollViewShadowsSettings(py)shadowAlpha\"\u003eshadowAlpha\u003c/a\u003e\u003c/code\u003e instead.\u003c/p\u003e","parent_name":"MMMScrollViewShadowsSettings"},"Classes/MMMScrollViewShadowsSettings.html#/c:objc(cs)MMMScrollViewShadowsSettings(py)shadowCurvature":{"name":"shadowCurvature","abstract":"\u003cp\u003eThe value between 0 and 1 telling how close to an elliptical curve the shadow\u0026rsquo;s border should be.\u003c/p\u003e","parent_name":"MMMScrollViewShadowsSettings"},"Classes/MMMScrollViewShadowsSettings.html#/c:objc(cs)MMMScrollViewShadowsSettings(py)topShadowEnabled":{"name":"topShadowEnabled","abstract":"\u003cp\u003eDisabled by default.\u003c/p\u003e","parent_name":"MMMScrollViewShadowsSettings"},"Classes/MMMScrollViewShadowsSettings.html#/c:objc(cs)MMMScrollViewShadowsSettings(py)topShadowHeight":{"name":"topShadowHeight","abstract":"\u003cp\u003eThe height of the top shadow view. (5px by default.)\u003c/p\u003e","parent_name":"MMMScrollViewShadowsSettings"},"Classes/MMMScrollViewShadowsSettings.html#/c:objc(cs)MMMScrollViewShadowsSettings(py)topShadowShouldUseContentInsets":{"name":"topShadowShouldUseContentInsets","abstract":"\u003cp\u003eYES, if the top shadow should be offset from the top edge of the scroll view by the top offset of content insets.\u003c/p\u003e","parent_name":"MMMScrollViewShadowsSettings"},"Classes/MMMScrollViewShadowsSettings.html#/c:objc(cs)MMMScrollViewShadowsSettings(py)bottomShadowEnabled":{"name":"bottomShadowEnabled","abstract":"\u003cp\u003eDisabled by default.\u003c/p\u003e","parent_name":"MMMScrollViewShadowsSettings"},"Classes/MMMScrollViewShadowsSettings.html#/c:objc(cs)MMMScrollViewShadowsSettings(py)bottomShadowHeight":{"name":"bottomShadowHeight","abstract":"\u003cp\u003eThe height of the bottom shadow view. (10px by default.)\u003c/p\u003e","parent_name":"MMMScrollViewShadowsSettings"},"Classes/MMMScrollViewShadowsSettings.html#/c:objc(cs)MMMScrollViewShadowsSettings(py)bottomShadowShouldUseContentInsets":{"name":"bottomShadowShouldUseContentInsets","abstract":"\u003cp\u003eYES, if the bottom shadow should be offset from the bottom edge of the scroll view by the bottom offset of content insets.\u003c/p\u003e","parent_name":"MMMScrollViewShadowsSettings"},"Classes/MMMScrollViewShadowsSettings.html#/c:objc(cs)MMMScrollViewShadowsSettings(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMScrollViewShadowsSettings"},"Classes/MMMScrollViewShadows.html#/c:objc(cs)MMMScrollViewShadows(im)initWithScrollView:settings:":{"name":"-initWithScrollView:settings:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMScrollViewShadows"},"Classes/MMMScrollViewShadows.html#/c:objc(cs)MMMScrollViewShadows(im)init":{"name":"-init","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MMMScrollViewShadows"},"Classes/MMMScrollViewShadows.html#/c:objc(cs)MMMScrollViewShadows(im)layoutSubviews":{"name":"-layoutSubviews","abstract":"\u003cp\u003eHave to be called from \u003ccode\u003elayoutSubviews\u003c/code\u003e of our scroll view subclass to update the state of the shadows.\u003c/p\u003e","parent_name":"MMMScrollViewShadows"},"Classes/MMMScrollViewShadows.html#/c:objc(cs)MMMScrollViewShadows(im)mightNeedClippingView":{"name":"-mightNeedClippingView","abstract":"\u003cp\u003eYES, if additional content view clipping might be needed for the current shadow settings.\u003c/p\u003e","parent_name":"MMMScrollViewShadows"},"Classes/MMMScrollViewShadows.html#/c:objc(cs)MMMScrollViewShadows(im)layoutSubviewsWithClippingView:":{"name":"-layoutSubviewsWithClippingView:","abstract":"\u003cp\u003eSame as \u003ccode\u003elayoutSubviews\u003c/code\u003e above but also updates \u003ccode\u003eclipToBounds\u003c/code\u003e property of the given view in case there are visible\u003c/p\u003e","parent_name":"MMMScrollViewShadows"},"Classes/MMMScrollViewShadows.html":{"name":"MMMScrollViewShadows","abstract":"\u003cp\u003eA helper for adding top and bottom shadows into any UIScrollView-based class."},"Classes/MMMScrollViewShadowsSettings.html":{"name":"MMMScrollViewShadowsSettings","abstract":"\u003cp\u003eHolds configuration for MMMScrollViewShadows that can be set only on initialization time.\u003c/p\u003e"},"Classes/MMMScrollViewShadowView.html":{"name":"MMMScrollViewShadowView","abstract":"\u003cp\u003eA view that\u0026rsquo;s used internally to render shadows in MMMAutoLayoutScrollView."},"Classes/MMMWebView.html":{"name":"MMMWebView","abstract":"\u003cp\u003eWeb view supporting top \u0026amp; bottom shadows.\u003c/p\u003e"},"Classes/MMMTableViewCell.html":{"name":"MMMTableViewCell","abstract":"\u003cp\u003eA base for table view cells redeclareing the designated initializer into the one we typically use,"},"Classes/MMMViewWrappingCell.html":{"name":"MMMViewWrappingCell","abstract":"\u003cp\u003eA simple table view cell wrapping the given view. \u003c/p\u003e"},"Classes/MMMNavigationHop.html":{"name":"MMMNavigationHop","abstract":"\u003cp\u003eOpening a deep link can involve following through one or more steps, for example:\u003c/p\u003e"},"Classes/MMMNavigationPath.html":{"name":"MMMNavigationPath","abstract":"\u003cp\u003eA navigation path is just a collection of one or more \u0026ldquo;hops\u0026rdquo;.\u003c/p\u003e"},"Classes/MMMNavigation.html":{"name":"MMMNavigation","abstract":"\u003cp\u003eManages switching between different sections of the app (kind of internal URL router)."},"Classes/MMMNavigationRequest.html":{"name":"MMMNavigationRequest","abstract":"\u003cp\u003eInfo about a navigation request that is passed to handlers.\u003c/p\u003e"},"Classes/MMMStubViewController.html":{"name":"MMMStubViewController","abstract":"\u003cp\u003eThis is to be used during development to stub not ready yet parts of the app.\u003c/p\u003e"},"Classes/MMMImageView.html":{"name":"MMMImageView","abstract":"\u003cp\u003eA limited replacement for UIImageView fixing its inability to properly work with images having"},"Classes/MMMAutoLayoutScrollView.html":{"name":"MMMAutoLayoutScrollView","abstract":"\u003cp\u003eA vertical scroll view with a content view and preconfigured constraints, so there is no need in creating"},"Classes.html#/c:objc(cs)MMMAutoLayoutScrollViewContentView":{"name":"MMMAutoLayoutScrollViewContentView","abstract":"\u003cp\u003eA subview of MMMAutoLayoutScrollView where all the subviews should be added.\u003c/p\u003e"},"Classes/MMMStubView.html":{"name":"MMMStubView","abstract":"\u003cp\u003eTo be used during development as a placeholder for not yet implemented views."},"Classes/MMMNavigationStack.html":{"name":"MMMNavigationStack","abstract":"\u003cp\u003eThis is to track the navigation state of the app and have the possibility to programmatically return to registered points of"},"Classes/MMMTableView.html":{"name":"MMMTableView","abstract":"\u003cp\u003eA table view supporting top and bottom shadows.\u003c/p\u003e"},"Classes/MMMShadowViewSetting.html":{"name":"MMMShadowViewSetting","abstract":"\u003cp\u003eHolds configuration for MMMShadowView.\u003c/p\u003e"},"Classes/MMMShadowView.html":{"name":"MMMShadowView","abstract":"\u003cp\u003eHelper view for adding custom layer shadows, while taking the the shadow sizes in conserderation for its final frame.\u003c/p\u003e"},"Classes/MMMContainerView.html":{"name":"MMMContainerView","abstract":"\u003cp\u003eAuto Layout does not support constraints against groups of items, so this is for the cases a normal UIView is"},"Classes/MMMLayoutUtils.html":{"name":"MMMLayoutUtils","abstract":"\u003cp\u003eThis is to group a few simple layout helpers.\u003c/p\u003e"},"Classes/MMMVelocityMeter.html":{"name":"MMMVelocityMeter","abstract":"\u003cp\u003eA little helper for velocity/acceleration calculations: you feed it values with timestamps and can get the most recent"},"Classes/MMMAnimation.html":{"name":"MMMAnimation","abstract":"\u003cp\u003eMinimalistic animation helpers.\u003c/p\u003e"},"Classes/MMMAnimator.html":{"name":"MMMAnimator","abstract":"\u003cp\u003eMinimalistic animator object in the spirit of helpers defined in MMMAnimation.\u003c/p\u003e"},"Classes/MMMAnimationHandle.html":{"name":"MMMAnimationHandle","abstract":"\u003cp\u003eSort of a handle returned by MMMAnimator when a new animation is scheduled."},"Classes/MMMCollectionView.html":{"name":"MMMCollectionView","abstract":"\u003cp\u003eCollection view supporting top \u0026amp; bottom shadows.\u003c/p\u003e"},"Classes/MMMSpacerView.html":{"name":"MMMSpacerView","abstract":"\u003cp\u003eAuto Layout does not support relationships between empty spaces, so we need to use spacer views and set such"},"Classes/MMMStackContainer.html":{"name":"MMMStackContainer","abstract":"\u003cp\u003eA container which lays out its subviews in certain direction one after another using fixed spacing between them."},"Classes/MMMVerticalStackContainer.html":{"name":"MMMVerticalStackContainer","abstract":"\u003cp\u003eVertical version of MMMStackContainer.\u003c/p\u003e"},"Classes/MMMHorizontalStackContainer.html":{"name":"MMMHorizontalStackContainer","abstract":"\u003cp\u003eHorizontal version of MMMStackContainer.\u003c/p\u003e"},"Classes/MMMAutoLayoutIsolator.html":{"name":"MMMAutoLayoutIsolator","abstract":"\u003cp\u003eWraps a view that uses Auto Layout into a manual layout view providing sizeThatFits: for the outside world."},"Classes/MMMPaddedView.html":{"name":"MMMPaddedView","abstract":"\u003cp\u003eWraps a view padding it from all the sides.\u003c/p\u003e"},"Classes/MMMVerticalGradientView.html":{"name":"MMMVerticalGradientView","abstract":"\u003cp\u003eA view displaying a gradient from top to bottom. The linearity of the gradient can be controlled."},"Classes/MMMStylesheet.html":{"name":"MMMStylesheet","abstract":"\u003cp\u003eA base for app-specific stylesheets: commonly used paddings, colors, fonts, etc in a single place.\u003c/p\u003e"},"Classes/MMMStylesheetScaleConverter.html":{"name":"MMMStylesheetScaleConverter","abstract":"\u003cp\u003eDimension converter that uses a table of scales.\u003c/p\u003e"},"Categories/NSLayoutConstraint%28MMMTemple%29.html#/c:objc(cs)NSLayoutConstraint(cm)mmm_constraintsWithVisualFormat:options:metrics:views:":{"name":"+mmm_constraintsWithVisualFormat:options:metrics:views:","abstract":"\u003cp\u003eOur wrapper over the corresponding method of NSLayoutConstraint extending the visual layout language a bit to support","parent_name":"NSLayoutConstraint(MMMTemple)"},"Categories/NSLayoutConstraint%28MMMTemple%29.html#/c:objc(cs)NSLayoutConstraint(cm)mmm_activateConstraintsWithVisualFormat:options:metrics:views:":{"name":"+mmm_activateConstraintsWithVisualFormat:options:metrics:views:","abstract":"\u003cp\u003eA shortcut for \u003ccode\u003e[NSLayoutConstraint activateConstraints:[NSLayoutConstraint mmm_constraintsWithVisualFormat:...\u003c/code\u003e.\u003c/p\u003e","parent_name":"NSLayoutConstraint(MMMTemple)"},"Categories/NSLayoutConstraint%28MMMTemple%29.html#/c:objc(cs)NSLayoutConstraint(cm)activateConstraint:":{"name":"+activateConstraint:","abstract":"\u003cp\u003eMissing counterparts for (de)activateConstraints, so constraint activation code looks the same for individual constraints.\u003c/p\u003e","parent_name":"NSLayoutConstraint(MMMTemple)"},"Categories/NSLayoutConstraint%28MMMTemple%29.html#/c:objc(cs)NSLayoutConstraint(cm)deactivateConstraint:":{"name":"+deactivateConstraint:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NSLayoutConstraint(MMMTemple)"},"Categories/NSLayoutConstraint%28MMMTemple%29.html#/c:objc(cs)NSLayoutConstraint(cm)constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:priority:":{"name":"+constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:priority:","abstract":"\u003cp\u003eA missing convenience initializer including priority.\u003c/p\u003e","parent_name":"NSLayoutConstraint(MMMTemple)"},"Categories/NSLayoutConstraint%28MMMTemple%29.html#/c:objc(cs)NSLayoutConstraint(cm)constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:identifier:":{"name":"+constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:identifier:","abstract":"\u003cp\u003eA missing convenience initializer allowing to set identifier for this constraint.\u003c/p\u003e","parent_name":"NSLayoutConstraint(MMMTemple)"},"Categories/NSLayoutConstraint%28MMMTemple%29.html#/c:objc(cs)NSLayoutConstraint(cm)constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:priority:identifier:":{"name":"+constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:priority:identifier:","abstract":"\u003cp\u003eA missing convenience initializer allowing to set both priority and identifier for this constraint.\u003c/p\u003e","parent_name":"NSLayoutConstraint(MMMTemple)"},"Categories/NSLayoutConstraint%28MMMTemple%29.html#/c:objc(cs)NSLayoutConstraint(cm)constraintsWithVisualFormat:options:metrics:views:identifier:":{"name":"+constraintsWithVisualFormat:options:metrics:views:identifier:","abstract":"\u003cp\u003eA missing convenience initializer allowing to tag a bunch of visual constraints with the same identifier.\u003c/p\u003e","parent_name":"NSLayoutConstraint(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(py)mmm_rect":{"name":"mmm_rect","abstract":"\u003cp\u003eA wrapper for the \u003ccode\u003ecenter\u003c/code\u003e and \u003ccode\u003ebounds.size\u003c/code\u003e properties similar to \u0026lsquo;frame\u0026rsquo;, but not taking the current transform into account. \u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(py)mmm_size":{"name":"mmm_size","abstract":"\u003cp\u003eA wrapper for the \u003ccode\u003esize\u003c/code\u003e component of \u003ccode\u003ebounds\u003c/code\u003e property.\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(py)mmm_safeAreaLayoutGuide":{"name":"mmm_safeAreaLayoutGuide","abstract":"\u003cp\u003eA safer version of \u003ccode\u003esafeAreaLayoutGuide\u003c/code\u003e that attempts to avoid layout loops happening when a view using it\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(py)mmm_safeAreaInsets":{"name":"mmm_safeAreaInsets","abstract":"\u003cp\u003eEffective \u003ccode\u003esafeAreaInsets\u003c/code\u003e as seen by \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbCategories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(py)mmm_safeAreaLayoutGuide\"\u003emmm_safeAreaLayoutGuide\u003c/a\u003e\u003c/code\u003e.\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_constraintsAligningView:horizontally:vertically:insets:":{"name":"-mmm_constraintsAligningView:horizontally:vertically:insets:","abstract":"\u003cp\u003eConstraints anchoring the given view within the receiver according to horizontal and vertical alignment flags.","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_constraintsAligningView:horizontally:":{"name":"-mmm_constraintsAligningView:horizontally:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_constraintsAligningView:vertically:":{"name":"-mmm_constraintsAligningView:vertically:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_constraintsAligningGuide:horizontally:vertically:insets:":{"name":"-mmm_constraintsAligningGuide:horizontally:vertically:insets:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_addConstraintsAligningView:horizontally:vertically:insets:":{"name":"-mmm_addConstraintsAligningView:horizontally:vertically:insets:","abstract":"\u003cp\u003eAdds contraints anchoring the given view within the receiver according to horizontal and vertical alignment flags.","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_addConstraintsAligningView:horizontally:vertically:":{"name":"-mmm_addConstraintsAligningView:horizontally:vertically:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_addConstraintsAligningView:horizontally:":{"name":"-mmm_addConstraintsAligningView:horizontally:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_addConstraintsAligningView:vertically:":{"name":"-mmm_addConstraintsAligningView:vertically:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_constraintsHorizontallyCenteringView:minPadding:maxWidth:":{"name":"-mmm_constraintsHorizontallyCenteringView:minPadding:maxWidth:","abstract":"\u003cp\u003eNot yet activated constraints implementing a common layout idiom used with text:\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_addConstraintsHorizontallyCenteringView:minPadding:maxWidth:":{"name":"-mmm_addConstraintsHorizontallyCenteringView:minPadding:maxWidth:","abstract":"\u003cp\u003eA shortcut activating constraints returned by \u003ccode\u003emmm_constraintsHorizontallyCenteringView:minPadding:maxWidth:\u003c/code\u003e.\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_addConstraintsHorizontallyCenteringView:minPadding:":{"name":"-mmm_addConstraintsHorizontallyCenteringView:minPadding:","abstract":"\u003cp\u003eA shortcut activating constraints returned by \u003ccode\u003emmm_constraintsHorizontallyCenteringView:minPadding:maxWidth:\u003c/code\u003e\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_addConstraintsForSubview:horizontalAlignment:verticalAlignment:insets:":{"name":"-mmm_addConstraintsForSubview:horizontalAlignment:verticalAlignment:insets:","abstract":"\u003cp\u003eAdds constraints anchoring the given subview within the receiver according to horizontal and vertical alignment flags.","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_addConstraintsForSubview:horizontalAlignment:verticalAlignment:":{"name":"-mmm_addConstraintsForSubview:horizontalAlignment:verticalAlignment:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_addVerticalSpaceRatioConstraintsForSubview:topItem:topAttribute:bottomItem:bottomAttribute:ratio:priority:":{"name":"-mmm_addVerticalSpaceRatioConstraintsForSubview:topItem:topAttribute:bottomItem:bottomAttribute:ratio:priority:","abstract":"\u003cp\u003eAdds constraints and two hidden auxiliary views ensuring that the space between the top of the subview and","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_addVerticalSpaceRatioConstraintsForSubview:topItem:topAttribute:bottomItem:bottomAttribute:ratio:":{"name":"-mmm_addVerticalSpaceRatioConstraintsForSubview:topItem:topAttribute:bottomItem:bottomAttribute:ratio:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_addVerticalSpaceRatioConstraintsForSubview:item:attribute:ratio:":{"name":"-mmm_addVerticalSpaceRatioConstraintsForSubview:item:attribute:ratio:","abstract":"\u003cp\u003eAdds constrains and a hidden auxiliary view ensuring that specified item / attribute vertically divides","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_setVerticalCompressionResistance:":{"name":"-mmm_setVerticalCompressionResistance:","abstract":"\u003cp\u003eShortcuts for compression resistance and hugging priorities.\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_setHorizontalCompressionResistance:":{"name":"-mmm_setHorizontalCompressionResistance:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_setVerticalHuggingPriority:":{"name":"-mmm_setVerticalHuggingPriority:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_setHorizontalHuggingPriority:":{"name":"-mmm_setHorizontalHuggingPriority:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_setVerticalCompressionResistance:hugging:":{"name":"-mmm_setVerticalCompressionResistance:hugging:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_setHorizontalCompressionResistance:hugging:":{"name":"-mmm_setHorizontalCompressionResistance:hugging:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_setCompressionResistanceHorizontal:vertical:":{"name":"-mmm_setCompressionResistanceHorizontal:vertical:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UIView%28MMMTemple%29.html#/c:objc(cs)UIView(im)mmm_setHuggingHorizontal:vertical:":{"name":"-mmm_setHuggingHorizontal:vertical:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UIView(MMMTemple)"},"Categories/UILayoutGuide%28MMMTemple%29.html#/c:objc(cs)UILayoutGuide(im)initWithIdentifier:":{"name":"-initWithIdentifier:","abstract":"\u003cp\u003eConvenience initializer setting the guide\u0026rsquo;s identifier.\u003c/p\u003e","parent_name":"UILayoutGuide(MMMTemple)"},"Categories/UILayoutGuide%28MMMTemple%29.html#/c:objc(cs)UILayoutGuide(im)mmm_constraintsAligningView:horizontally:vertically:insets:":{"name":"-mmm_constraintsAligningView:horizontally:vertically:insets:","abstract":"\u003cp\u003eNot yet activated constraints anchoring the given view within the receiver according to horizontal","parent_name":"UILayoutGuide(MMMTemple)"},"Categories/UILayoutGuide%28MMMTemple%29.html#/c:objc(cs)UILayoutGuide(im)mmm_constraintsAligningGuide:horizontally:vertically:insets:":{"name":"-mmm_constraintsAligningGuide:horizontally:vertically:insets:","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"UILayoutGuide(MMMTemple)"},"Categories/UILayoutGuide%28MMMTemple%29.html#/c:objc(cs)UILayoutGuide(im)mmm_constraintsHorizontallyCenteringView:minPadding:maxWidth:":{"name":"-mmm_constraintsHorizontallyCenteringView:minPadding:maxWidth:","abstract":"\u003cp\u003eNot yet activated constraints implementing a common layout idiom used with text:\u003c/p\u003e","parent_name":"UILayoutGuide(MMMTemple)"},"Categories/UIView%28MMMPreferredSizeChanges%29.html#/c:objc(cs)UIView(im)mmm_setPreferredSizeCouldChange":{"name":"-mmm_setPreferredSizeCouldChange","abstract":"\u003cp\u003eSignals to one of the interested parent views (supporting \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbProtocols/MMMPreferredSizeChanges.html\"\u003eMMMPreferredSizeChanges\u003c/a\u003e\u003c/code\u003e)","parent_name":"UIView(MMMPreferredSizeChanges)"},"Categories/UIView%28MMMPreferredSizeChanges%29.html":{"name":"UIView(MMMPreferredSizeChanges)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Categories/UILayoutGuide%28MMMTemple%29.html":{"name":"UILayoutGuide(MMMTemple)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Categories/UIView%28MMMTemple%29.html":{"name":"UIView(MMMTemple)","abstract":"\u003cp\u003eA few shorthands for UIView.\u003c/p\u003e"},"Categories/NSLayoutConstraint%28MMMTemple%29.html":{"name":"NSLayoutConstraint(MMMTemple)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Categories.html":{"name":"Categories","abstract":"\u003cp\u003eThe following categories are available globally.\u003c/p\u003e"},"Classes.html":{"name":"Classes","abstract":"\u003cp\u003eThe following classes are available globally.\u003c/p\u003e"},"Constants.html":{"name":"Constants","abstract":"\u003cp\u003eThe following constants are available globally.\u003c/p\u003e"},"Enums.html":{"name":"Enumerations","abstract":"\u003cp\u003eThe following enumerations are available globally.\u003c/p\u003e"},"Protocols.html":{"name":"Protocols","abstract":"\u003cp\u003eThe following protocols are available globally.\u003c/p\u003e"},"Type%20Definitions.html":{"name":"Type Definitions","abstract":"\u003cp\u003eThe following type definitions are available globally.\u003c/p\u003e"},"Functions.html":{"name":"Functions","abstract":"\u003cp\u003eThe following functions are available globally.\u003c/p\u003e"}} \ No newline at end of file +{} \ No newline at end of file diff --git a/undocumented.json b/undocumented.json index 3d039c1..0e5bdb9 100644 --- a/undocumented.json +++ b/undocumented.json @@ -1,1692 +1,6 @@ { "warnings": [ - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 30, - "symbol": "MMMAnimationCurve", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enum", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 30, - "symbol": "MMMAnimationCurve", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enum", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 30, - "symbol": "MMMAnimationCurve", - "symbol_kind": "sourcekitten.source.lang.objc.decl.typedef", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 30, - "symbol": "MMMAnimationCurve", - "symbol_kind": "sourcekitten.source.lang.objc.decl.typedef", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 32, - "symbol": "MMMAnimationCurve.MMMAnimationCurveLinear", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 32, - "symbol": "MMMAnimationCurve.MMMAnimationCurveLinear", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 33, - "symbol": "MMMAnimationCurve.MMMAnimationCurveEaseOut", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 33, - "symbol": "MMMAnimationCurve.MMMAnimationCurveEaseOut", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 34, - "symbol": "MMMAnimationCurve.MMMAnimationCurveEaseIn", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 34, - "symbol": "MMMAnimationCurve.MMMAnimationCurveEaseIn", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 35, - "symbol": "MMMAnimationCurve.MMMAnimationCurveEaseInOut", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 35, - "symbol": "MMMAnimationCurve.MMMAnimationCurveEaseInOut", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 38, - "symbol": "MMMAnimationCurve.MMMAnimationCurveSofterEaseIn", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 38, - "symbol": "MMMAnimationCurve.MMMAnimationCurveSofterEaseIn", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 39, - "symbol": "MMMAnimationCurve.MMMAnimationCurveSofterEaseOut", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 39, - "symbol": "MMMAnimationCurve.MMMAnimationCurveSofterEaseOut", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 40, - "symbol": "MMMAnimationCurve.MMMAnimationCurveSofterEaseInOut", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 40, - "symbol": "MMMAnimationCurve.MMMAnimationCurveSofterEaseInOut", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 43, - "symbol": "MMMAnimationCurve.MMMAnimationCurveEaseInQuad", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 43, - "symbol": "MMMAnimationCurve.MMMAnimationCurveEaseInQuad", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 44, - "symbol": "MMMAnimationCurve.MMMAnimationCurveEaseOutQuad", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 44, - "symbol": "MMMAnimationCurve.MMMAnimationCurveEaseOutQuad", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 45, - "symbol": "MMMAnimationCurve.MMMAnimationCurveEaseInOutQuad", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 45, - "symbol": "MMMAnimationCurve.MMMAnimationCurveEaseInOutQuad", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 48, - "symbol": "MMMAnimationCurve.MMMAnimationCurveEaseInCubic", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 48, - "symbol": "MMMAnimationCurve.MMMAnimationCurveEaseInCubic", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 49, - "symbol": "MMMAnimationCurve.MMMAnimationCurveEaseOutCubic", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 49, - "symbol": "MMMAnimationCurve.MMMAnimationCurveEaseOutCubic", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 50, - "symbol": "MMMAnimationCurve.MMMAnimationCurveEaseInOutCubic", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 50, - "symbol": "MMMAnimationCurve.MMMAnimationCurveEaseInOutCubic", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 53, - "symbol": "MMMAnimationCurve.MMMAnimationCurveEaseInQuart", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 53, - "symbol": "MMMAnimationCurve.MMMAnimationCurveEaseInQuart", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 54, - "symbol": "MMMAnimationCurve.MMMAnimationCurveEaseOutQuart", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 54, - "symbol": "MMMAnimationCurve.MMMAnimationCurveEaseOutQuart", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 55, - "symbol": "MMMAnimationCurve.MMMAnimationCurveEaseInOutQuart", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 55, - "symbol": "MMMAnimationCurve.MMMAnimationCurveEaseInOutQuart", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 58, - "symbol": "MMMAnimationCurve.MMMAnimationCurveEaseInQuint", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 58, - "symbol": "MMMAnimationCurve.MMMAnimationCurveEaseInQuint", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 59, - "symbol": "MMMAnimationCurve.MMMAnimationCurveEaseOutQuint", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 59, - "symbol": "MMMAnimationCurve.MMMAnimationCurveEaseOutQuint", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 60, - "symbol": "MMMAnimationCurve.MMMAnimationCurveEaseInOutQuint", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 60, - "symbol": "MMMAnimationCurve.MMMAnimationCurveEaseInOutQuint", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 149, - "symbol": "MMMAnimator.+shared", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 149, - "symbol": "MMMAnimator.+shared", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 177, - "symbol": "MMMAnimator.-addAnimationWithDuration:repeatCount:autoreverse:updateBlock:doneBlock:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 177, - "symbol": "MMMAnimator.-addAnimationWithDuration:repeatCount:autoreverse:updateBlock:doneBlock:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 189, - "symbol": "MMMAnimator()", - "symbol_kind": "sourcekitten.source.lang.objc.decl.category", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 189, - "symbol": "MMMAnimator()", - "symbol_kind": "sourcekitten.source.lang.objc.decl.category", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 219, - "symbol": "MMMAnimationHandle.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAnimations.h", - "line": 219, - "symbol": "MMMAnimationHandle.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAutoLayoutScrollView.h", - "line": 43, - "symbol": "MMMAutoLayoutScrollView.-initWithCoder:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMAutoLayoutScrollView.h", - "line": 44, - "symbol": "MMMAutoLayoutScrollView.-initWithFrame:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMCollectionView.h", - "line": 20, - "symbol": "MMMCollectionView.-initWithFrame:collectionViewLayout:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMCollectionView.h", - "line": 21, - "symbol": "MMMCollectionView.-initWithCoder:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMCollectionView.h", - "line": 22, - "symbol": "MMMCollectionView.-initWithFrame:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMCollectionView.h", - "line": 23, - "symbol": "MMMCollectionView.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMContainerView.h", - "line": 18, - "symbol": "MMMContainerView.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMContainerView.h", - "line": 20, - "symbol": "MMMContainerView.-initWithCoder:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMContainerView.h", - "line": 21, - "symbol": "MMMContainerView.-initWithFrame:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMImageView.h", - "line": 19, - "symbol": "MMMImageView.image", - "symbol_kind": "sourcekitten.source.lang.objc.decl.property", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMImageView.h", - "line": 20, - "symbol": "MMMImageView.highlightedImage", - "symbol_kind": "sourcekitten.source.lang.objc.decl.property", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMImageView.h", - "line": 22, - "symbol": "MMMImageView.highlighted", - "symbol_kind": "sourcekitten.source.lang.objc.decl.property", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMImageView.h", - "line": 24, - "symbol": "MMMImageView.-initWithImage:highlightedImage:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMImageView.h", - "line": 32, - "symbol": "MMMImageView.-initWithFrame:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMImageView.h", - "line": 33, - "symbol": "MMMImageView.-initWithCoder:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 18, - "symbol": "MMMSpacerView.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 20, - "symbol": "MMMSpacerView.-initWithCoder:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 21, - "symbol": "MMMSpacerView.-initWithFrame:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 27, - "symbol": "MMMLayoutAlignment.MMMLayoutAlignmentNone", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 28, - "symbol": "MMMLayoutAlignment.MMMLayoutAlignmentLeading", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 29, - "symbol": "MMMLayoutAlignment.MMMLayoutAlignmentGolden", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 30, - "symbol": "MMMLayoutAlignment.MMMLayoutAlignmentCenter", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 31, - "symbol": "MMMLayoutAlignment.MMMLayoutAlignmentTrailing", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 32, - "symbol": "MMMLayoutAlignment.MMMLayoutAlignmentFill", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 35, - "symbol": "MMMLayoutDirection", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enum", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 35, - "symbol": "MMMLayoutDirection", - "symbol_kind": "sourcekitten.source.lang.objc.decl.typedef", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 36, - "symbol": "MMMLayoutDirection.MMMLayoutDirectionHorizontal", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 37, - "symbol": "MMMLayoutDirection.MMMLayoutDirectionVertical", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 40, - "symbol": "MMMLayoutHorizontalAlignment", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enum", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 40, - "symbol": "MMMLayoutHorizontalAlignment", - "symbol_kind": "sourcekitten.source.lang.objc.decl.typedef", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 41, - "symbol": "MMMLayoutHorizontalAlignment.MMMLayoutHorizontalAlignmentNone", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 42, - "symbol": "MMMLayoutHorizontalAlignment.MMMLayoutHorizontalAlignmentLeft", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 43, - "symbol": "MMMLayoutHorizontalAlignment.MMMLayoutHorizontalAlignmentGolden", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 44, - "symbol": "MMMLayoutHorizontalAlignment.MMMLayoutHorizontalAlignmentCenter", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 45, - "symbol": "MMMLayoutHorizontalAlignment.MMMLayoutHorizontalAlignmentRight", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 46, - "symbol": "MMMLayoutHorizontalAlignment.MMMLayoutHorizontalAlignmentFill", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 49, - "symbol": "MMMLayoutVerticalAlignment", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enum", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 49, - "symbol": "MMMLayoutVerticalAlignment", - "symbol_kind": "sourcekitten.source.lang.objc.decl.typedef", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 50, - "symbol": "MMMLayoutVerticalAlignment.MMMLayoutVerticalAlignmentNone", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 51, - "symbol": "MMMLayoutVerticalAlignment.MMMLayoutVerticalAlignmentTop", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 52, - "symbol": "MMMLayoutVerticalAlignment.MMMLayoutVerticalAlignmentGolden", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 53, - "symbol": "MMMLayoutVerticalAlignment.MMMLayoutVerticalAlignmentCenter", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 54, - "symbol": "MMMLayoutVerticalAlignment.MMMLayoutVerticalAlignmentBottom", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 55, - "symbol": "MMMLayoutVerticalAlignment.MMMLayoutVerticalAlignmentFill", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 58, - "symbol": "MMMLayoutAlignmentFromHorizontalAlignment", - "symbol_kind": "sourcekitten.source.lang.objc.decl.function", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 62, - "symbol": "MMMLayoutAlignmentFromVerticalAlignment", - "symbol_kind": "sourcekitten.source.lang.objc.decl.function", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 69, - "symbol": "UILayoutGuide(MMMTemple)", - "symbol_kind": "sourcekitten.source.lang.objc.decl.category", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 83, - "symbol": "UILayoutGuide(MMMTemple).-mmm_constraintsAligningGuide:horizontally:vertically:insets:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 129, - "symbol": "UIView(MMMTemple).-mmm_constraintsAligningView:horizontally:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 132, - "symbol": "UIView(MMMTemple).-mmm_constraintsAligningView:vertically:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 135, - "symbol": "UIView(MMMTemple).-mmm_constraintsAligningGuide:horizontally:vertically:insets:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 149, - "symbol": "UIView(MMMTemple).-mmm_addConstraintsAligningView:horizontally:vertically:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 153, - "symbol": "UIView(MMMTemple).-mmm_addConstraintsAligningView:horizontally:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 156, - "symbol": "UIView(MMMTemple).-mmm_addConstraintsAligningView:vertically:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 191, - "symbol": "UIView(MMMTemple).-mmm_addConstraintsForSubview:horizontalAlignment:verticalAlignment:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 216, - "symbol": "UIView(MMMTemple).-mmm_addVerticalSpaceRatioConstraintsForSubview:topItem:topAttribute:bottomItem:bottomAttribute:ratio:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 236, - "symbol": "UIView(MMMTemple).-mmm_setHorizontalCompressionResistance:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 238, - "symbol": "UIView(MMMTemple).-mmm_setVerticalHuggingPriority:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 239, - "symbol": "UIView(MMMTemple).-mmm_setHorizontalHuggingPriority:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 241, - "symbol": "UIView(MMMTemple).-mmm_setVerticalCompressionResistance:hugging:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 242, - "symbol": "UIView(MMMTemple).-mmm_setHorizontalCompressionResistance:hugging:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 244, - "symbol": "UIView(MMMTemple).-mmm_setCompressionResistanceHorizontal:vertical:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 247, - "symbol": "UIView(MMMTemple).-mmm_setHuggingHorizontal:vertical:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 254, - "symbol": "NSLayoutConstraint(MMMTemple)", - "symbol_kind": "sourcekitten.source.lang.objc.decl.category", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 299, - "symbol": "NSLayoutConstraint(MMMTemple).+deactivateConstraint:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 360, - "symbol": "MMMStackContainer.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 361, - "symbol": "MMMStackContainer.-initWithFrame:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 362, - "symbol": "MMMStackContainer.-initWithCoder:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 371, - "symbol": "MMMVerticalStackContainer.-initWithInsets:alignment:spacing:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 375, - "symbol": "MMMVerticalStackContainer.-initWithDirection:insets:alignment:spacing:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 387, - "symbol": "MMMHorizontalStackContainer.-initWithInsets:alignment:spacing:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 391, - "symbol": "MMMHorizontalStackContainer.-initWithDirection:insets:alignment:spacing:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 407, - "symbol": "MMMAutoLayoutIsolator.-initWithView:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 409, - "symbol": "MMMAutoLayoutIsolator.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 410, - "symbol": "MMMAutoLayoutIsolator.-initWithFrame:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 411, - "symbol": "MMMAutoLayoutIsolator.-initWithCoder:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 423, - "symbol": "MMMPaddedView.insets", - "symbol_kind": "sourcekitten.source.lang.objc.decl.property", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 425, - "symbol": "MMMPaddedView.-initWithView:insets:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 427, - "symbol": "MMMPaddedView.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 428, - "symbol": "MMMPaddedView.-initWithFrame:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMLayout.h", - "line": 429, - "symbol": "MMMPaddedView.-initWithCoder:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMNavigation.h", - "line": 28, - "symbol": "MMMNavigationHop.-initWithAction:params:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMNavigation.h", - "line": 30, - "symbol": "MMMNavigationHop.-initWithAction:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMNavigation.h", - "line": 32, - "symbol": "MMMNavigationHop.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMNavigation.h", - "line": 50, - "symbol": "MMMNavigationPath.-initWithHops:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMNavigation.h", - "line": 58, - "symbol": "MMMNavigationPath.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMNavigation.h", - "line": 62, - "symbol": "MMMNavigationRequestId", - "symbol_kind": "sourcekitten.source.lang.objc.decl.typedef", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMNavigation.h", - "line": 64, - "symbol": "MMMNavigationCompletionBlock", - "symbol_kind": "sourcekitten.source.lang.objc.decl.typedef", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMNavigation.h", - "line": 73, - "symbol": "MMMNavigation.+root", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMNavigation.h", - "line": 86, - "symbol": "MMMNavigationHandlerId", - "symbol_kind": "sourcekitten.source.lang.objc.decl.typedef", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMNavigation.h", - "line": 88, - "symbol": "MMMNavigation(Handlers)", - "symbol_kind": "sourcekitten.source.lang.objc.decl.category", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMNavigationStack.h", - "line": 10, - "symbol": "MMMNavigationStackCompletion", - "symbol_kind": "sourcekitten.source.lang.objc.decl.typedef", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMNavigationStack.h", - "line": 30, - "symbol": "MMMNavigationStack.+shared", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMNavigationStack.h", - "line": 54, - "symbol": "MMMNavigationStack.-popAllAfterController:completion:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMPreferredSizeChanges.h", - "line": 19, - "symbol": "MMMPreferredSizeChanges.-mmm_preferredSizeCouldChangeForSubview:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMPreferredSizeChanges.h", - "line": 19, - "symbol": "MMMPreferredSizeChanges.-mmm_preferredSizeCouldChangeForSubview:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMPreferredSizeChanges.h", - "line": 23, - "symbol": "UIView(MMMPreferredSizeChanges)", - "symbol_kind": "sourcekitten.source.lang.objc.decl.category", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMPreferredSizeChanges.h", - "line": 23, - "symbol": "UIView(MMMPreferredSizeChanges)", - "symbol_kind": "sourcekitten.source.lang.objc.decl.category", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 18, - "symbol": "MMMScrollViewShadows.-initWithScrollView:settings:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 18, - "symbol": "MMMScrollViewShadows.-initWithScrollView:settings:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 18, - "symbol": "MMMScrollViewShadows.-initWithScrollView:settings:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 18, - "symbol": "MMMScrollViewShadows.-initWithScrollView:settings:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 21, - "symbol": "MMMScrollViewShadows.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 21, - "symbol": "MMMScrollViewShadows.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 21, - "symbol": "MMMScrollViewShadows.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 21, - "symbol": "MMMScrollViewShadows.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 81, - "symbol": "MMMScrollViewShadowsSettings.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 81, - "symbol": "MMMScrollViewShadowsSettings.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 81, - "symbol": "MMMScrollViewShadowsSettings.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 81, - "symbol": "MMMScrollViewShadowsSettings.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 87, - "symbol": "MMMScrollViewShadowAlignment", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enum", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 87, - "symbol": "MMMScrollViewShadowAlignment", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enum", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 87, - "symbol": "MMMScrollViewShadowAlignment", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enum", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 87, - "symbol": "MMMScrollViewShadowAlignment", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enum", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 87, - "symbol": "MMMScrollViewShadowAlignment", - "symbol_kind": "sourcekitten.source.lang.objc.decl.typedef", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 87, - "symbol": "MMMScrollViewShadowAlignment", - "symbol_kind": "sourcekitten.source.lang.objc.decl.typedef", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 87, - "symbol": "MMMScrollViewShadowAlignment", - "symbol_kind": "sourcekitten.source.lang.objc.decl.typedef", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 87, - "symbol": "MMMScrollViewShadowAlignment", - "symbol_kind": "sourcekitten.source.lang.objc.decl.typedef", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 88, - "symbol": "MMMScrollViewShadowAlignment.MMMScrollViewShadowAlignmentTop", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 88, - "symbol": "MMMScrollViewShadowAlignment.MMMScrollViewShadowAlignmentTop", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 88, - "symbol": "MMMScrollViewShadowAlignment.MMMScrollViewShadowAlignmentTop", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 88, - "symbol": "MMMScrollViewShadowAlignment.MMMScrollViewShadowAlignmentTop", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 89, - "symbol": "MMMScrollViewShadowAlignment.MMMScrollViewShadowAlignmentBottom", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 89, - "symbol": "MMMScrollViewShadowAlignment.MMMScrollViewShadowAlignmentBottom", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 89, - "symbol": "MMMScrollViewShadowAlignment.MMMScrollViewShadowAlignmentBottom", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 89, - "symbol": "MMMScrollViewShadowAlignment.MMMScrollViewShadowAlignmentBottom", - "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 97, - "symbol": "MMMScrollViewShadowView.-initWithAlignment:settings:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 97, - "symbol": "MMMScrollViewShadowView.-initWithAlignment:settings:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 97, - "symbol": "MMMScrollViewShadowView.-initWithAlignment:settings:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 97, - "symbol": "MMMScrollViewShadowView.-initWithAlignment:settings:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 100, - "symbol": "MMMScrollViewShadowView.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 100, - "symbol": "MMMScrollViewShadowView.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 100, - "symbol": "MMMScrollViewShadowView.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 100, - "symbol": "MMMScrollViewShadowView.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 101, - "symbol": "MMMScrollViewShadowView.-initWithCoder:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 101, - "symbol": "MMMScrollViewShadowView.-initWithCoder:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 101, - "symbol": "MMMScrollViewShadowView.-initWithCoder:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 101, - "symbol": "MMMScrollViewShadowView.-initWithCoder:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 102, - "symbol": "MMMScrollViewShadowView.-initWithFrame:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 102, - "symbol": "MMMScrollViewShadowView.-initWithFrame:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 102, - "symbol": "MMMScrollViewShadowView.-initWithFrame:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMScrollViewShadows.h", - "line": 102, - "symbol": "MMMScrollViewShadowView.-initWithFrame:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMShadowView.h", - "line": 12, - "symbol": "MMMShadowViewSettingBlock", - "symbol_kind": "sourcekitten.source.lang.objc.decl.typedef", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMShadowView.h", - "line": 42, - "symbol": "MMMShadowViewSetting.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMShadowView.h", - "line": 44, - "symbol": "MMMShadowViewSetting.-initWithBlock:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMShadowView.h", - "line": 58, - "symbol": "MMMShadowView.settings", - "symbol_kind": "sourcekitten.source.lang.objc.decl.property", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMShadowView.h", - "line": 60, - "symbol": "MMMShadowView.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMShadowView.h", - "line": 61, - "symbol": "MMMShadowView.-initWithSettings:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMShadowView.h", - "line": 63, - "symbol": "MMMShadowView.-initWithFrame:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMShadowView.h", - "line": 64, - "symbol": "MMMShadowView.-initWithCoder:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMStubView.h", - "line": 20, - "symbol": "MMMStubView.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMStubView.h", - "line": 21, - "symbol": "MMMStubView.-initWithCoder:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMStubView.h", - "line": 22, - "symbol": "MMMStubView.-initWithFrame:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMStubViewController.h", - "line": 15, - "symbol": "MMMStubViewController.-initWithText:index:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMStubViewController.h", - "line": 17, - "symbol": "MMMStubViewController.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMStubViewController.h", - "line": 18, - "symbol": "MMMStubViewController.-initWithCoder:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMStubViewController.h", - "line": 19, - "symbol": "MMMStubViewController.-initWithNibName:bundle:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMStylesheet.h", - "line": 82, - "symbol": "MMMStylesheet.extraSmallPadding", - "symbol_kind": "sourcekitten.source.lang.objc.decl.property", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMStylesheet.h", - "line": 83, - "symbol": "MMMStylesheet.smallPadding", - "symbol_kind": "sourcekitten.source.lang.objc.decl.property", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMStylesheet.h", - "line": 84, - "symbol": "MMMStylesheet.normalPadding", - "symbol_kind": "sourcekitten.source.lang.objc.decl.property", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMStylesheet.h", - "line": 85, - "symbol": "MMMStylesheet.largePadding", - "symbol_kind": "sourcekitten.source.lang.objc.decl.property", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMStylesheet.h", - "line": 86, - "symbol": "MMMStylesheet.extraLargePadding", - "symbol_kind": "sourcekitten.source.lang.objc.decl.property", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMStylesheet.h", - "line": 207, - "symbol": "MMMStylesheetScaleConverter.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMTableView.h", - "line": 24, - "symbol": "MMMTableView.-initWithFrame:style:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMTableView.h", - "line": 25, - "symbol": "MMMTableView.-initWithCoder:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMTableView.h", - "line": 26, - "symbol": "MMMTableView.-initWithFrame:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMTableView.h", - "line": 27, - "symbol": "MMMTableView.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMTableViewCell.h", - "line": 14, - "symbol": "MMMTableViewCell.-initWithReuseIdentifier:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMTableViewCell.h", - "line": 14, - "symbol": "MMMTableViewCell.-initWithReuseIdentifier:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMTableViewCell.h", - "line": 16, - "symbol": "MMMTableViewCell.-initWithStyle:reuseIdentifier:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMTableViewCell.h", - "line": 16, - "symbol": "MMMTableViewCell.-initWithStyle:reuseIdentifier:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMTableViewCell.h", - "line": 17, - "symbol": "MMMTableViewCell.-initWithCoder:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMTableViewCell.h", - "line": 17, - "symbol": "MMMTableViewCell.-initWithCoder:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMTableViewCell.h", - "line": 18, - "symbol": "MMMTableViewCell.-initWithFrame:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMTableViewCell.h", - "line": 18, - "symbol": "MMMTableViewCell.-initWithFrame:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMTableViewCell.h", - "line": 19, - "symbol": "MMMTableViewCell.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMTableViewCell.h", - "line": 19, - "symbol": "MMMTableViewCell.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMVerticalGradientView.h", - "line": 18, - "symbol": "MMMVerticalGradientView.-initWithTopColor:bottomColor:curve:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMVerticalGradientView.h", - "line": 20, - "symbol": "MMMVerticalGradientView.-initWithTopColor:bottomColor:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMVerticalGradientView.h", - "line": 22, - "symbol": "MMMVerticalGradientView.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMVerticalGradientView.h", - "line": 23, - "symbol": "MMMVerticalGradientView.-initWithCoder:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMVerticalGradientView.h", - "line": 24, - "symbol": "MMMVerticalGradientView.-initWithFrame:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMViewWrappingCell.h", - "line": 23, - "symbol": "MMMViewWrappingCell.-initWithView:reuseIdentifier:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMViewWrappingCell.h", - "line": 24, - "symbol": "MMMViewWrappingCell.-initWithView:reuseIdentifier:inset:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMViewWrappingCell.h", - "line": 26, - "symbol": "MMMViewWrappingCell.-initWithReuseIdentifier:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMWebView.h", - "line": 18, - "symbol": "MMMWebView.-initWithSettings:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMWebView.h", - "line": 19, - "symbol": "MMMWebView.-initWithSettings:configuration:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMWebView.h", - "line": 21, - "symbol": "MMMWebView.-initWithCoder:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMWebView.h", - "line": 22, - "symbol": "MMMWebView.-initWithFrame:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMWebView.h", - "line": 23, - "symbol": "MMMWebView.-initWithFrame:configuration:", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/runner/work/MMMCommonUI/MMMCommonUI/Sources/MMMCommonUIObjC/MMMWebView.h", - "line": 24, - "symbol": "MMMWebView.-init", - "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", - "warning": "undocumented" - } + ], "source_directory": "/Users/runner/work/MMMCommonUI/MMMCommonUI" } \ No newline at end of file