blob: 0641955094c555f3bed88cd1be44be162f93e91f [file] [log] [blame] [edit]
// Copyright 2016-present the Material Components for iOS authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#import <UIKit/UIKit.h>
/**
The MDCHeaderStackView class lays out a vertical stack of two views.
Both bars provided to this view must implement sizeThatFits and return their best-fit
dimensions.
# Layout Behavior
The layout behavior of the two bars is as follows:
topBar: top aligned, expands to fill all available vertical space not taken up by the bottomBar.
bottomBar: bottom aligned.
If no bottomBar is provided, top bar consumes the entire bounds of the stack view.
When resized, the top bar will shrink until it reaches its sizeThatFits dimensions.
If there is a bottom bar, then at this point the top bar will begin sliding off the top.
If there is no bottom bar, then at this point the top bar will stay put.
At no point in time will either the top or bottom bar shrink below their sizeThatFits height.
# sizeThatFits Behavior
sizeThatFits returns the fitted height for bottom bar if available, otherwise it returns the
fitted height for topBar. The width will be whatever width was provided.
*/
IB_DESIGNABLE
@interface MDCHeaderStackView : UIView
/** The top bar. Top aligned and vertically expands. */
@property(nonatomic, strong, nullable) UIView *topBar;
/** The bottom bar. Bottom aligned. */
@property(nonatomic, strong, nullable) UIView *bottomBar;
/**
A block that is invoked when the @c MDCHeaderStackView receives a call to @c
traitCollectionDidChange:. The block is called after the call to the superclass.
*/
@property(nonatomic, copy, nullable) void (^traitCollectionDidChangeBlock)
(MDCHeaderStackView *_Nonnull headerStackView,
UITraitCollection *_Nullable previousTraitCollection);
@end