mirror of
https://github.com/material-components/material-components-ios.git
synced 2026-01-24 00:11:47 +08:00
100 lines
4.2 KiB
Objective-C
100 lines
4.2 KiB
Objective-C
// 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>
|
|
|
|
@class MDCAppBar;
|
|
@class MDCAppBarViewController;
|
|
|
|
/**
|
|
The MDCAppBarContainerViewController controller provides an interface for placing a
|
|
UIViewController behind an App Bar.
|
|
|
|
The MDCAppBarContainerViewController class is commonly referred to as the "wrapper API" for the
|
|
Material App Bar. This contrasts with the "injection" APIs as represented by the APIs in
|
|
MDCAppBar.h.
|
|
|
|
Use the MDCAppBarContainerViewController class when you do not own and cannot alter a view
|
|
controller to which you want to add an App Bar. If you do own and can modify a view controller
|
|
it is recommended that you use the MDCAppBar.h APIs instead.
|
|
|
|
### Why we recommend using the MDCAppBar.h APIs over this one
|
|
|
|
Wrapping a view controller affects your app code in a variety of not-so-nice ways.
|
|
|
|
1. Wrapped view controllers often need to be unwrapped in a variety of settings.
|
|
2. The wrapped view controller's parentViewController is now a level of indirection from its
|
|
previous parent.
|
|
3. Wrapping a view controller can affect things like "isMovingToParentViewController" in
|
|
wonderfully subtle ways.
|
|
*/
|
|
@interface MDCAppBarContainerViewController : UIViewController
|
|
|
|
/**
|
|
Initializes an App Bar container view controller instance with the given content view controller.
|
|
*/
|
|
- (nonnull instancetype)initWithContentViewController:
|
|
(nonnull UIViewController *)contentViewController NS_DESIGNATED_INITIALIZER;
|
|
|
|
- (nonnull instancetype)initWithNibName:(nullable NSString *)nibNameOrNil
|
|
bundle:(nullable NSBundle *)nibBundleOrNil NS_UNAVAILABLE;
|
|
- (nonnull instancetype)initWithCoder:(nonnull NSCoder *)aDecoder NS_UNAVAILABLE;
|
|
- (nonnull instancetype)init NS_UNAVAILABLE;
|
|
|
|
/**
|
|
The App Bar view controller that will be a sibling to the contentViewController.
|
|
*/
|
|
@property(nonatomic, strong, nonnull, readonly) MDCAppBarViewController *appBarViewController;
|
|
|
|
/** The content view controller to be displayed behind the header. */
|
|
@property(nonatomic, strong, nonnull, readonly) UIViewController *contentViewController;
|
|
|
|
@end
|
|
|
|
@interface MDCAppBarContainerViewController (ToBeDeprecated)
|
|
|
|
/**
|
|
If enabled, the content view controller's top layout guide will be adjusted as the flexible
|
|
header's height changes and the content view controller view's frame will be set to the container
|
|
view controller's bounds.
|
|
|
|
This behavior is disabled by default, but it will be enabled by default in the future. Consider
|
|
enabling this behavior and making use of the topLayoutGuide in your view controller accordingly.
|
|
|
|
Example positioning a view using constraints:
|
|
|
|
[NSLayoutConstraint constraintWithItem:view
|
|
attribute:NSLayoutAttributeTop
|
|
relatedBy:NSLayoutRelationEqual
|
|
toItem:self.topLayoutGuide
|
|
attribute:NSLayoutAttributeBottom
|
|
multiplier:1
|
|
constant:32]
|
|
|
|
Example positioning a view without constraints:
|
|
|
|
frame.origin.y = self.topLayoutGuide.length + 32
|
|
*/
|
|
@property(nonatomic, getter=isTopLayoutGuideAdjustmentEnabled) BOOL topLayoutGuideAdjustmentEnabled;
|
|
|
|
/**
|
|
The App Bar views that will be presented in front of the contentViewController's view.
|
|
|
|
@warning This API will eventually be deprecated. Use appBarViewController instead. Learn more at
|
|
https://github.com/material-components/material-components-ios/blob/develop/components/AppBar/docs/migration-guide-appbar-appbarviewcontroller.md
|
|
*/
|
|
@property(nonatomic, strong, nonnull, readonly) MDCAppBar *appBar;
|
|
|
|
@end
|