text: /*
   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 MDCFlexibleHeaderViewController;
  
  /**
   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 views that will be presented in front of the contentViewController's view. */
  @property(nonatomic, strong, nonnull, readonly) MDCAppBar *appBar;
  
  /** The content view controller to be displayed behind the header. */
  @property(nonatomic, strong, nonnull, readonly) UIViewController *contentViewController;
  
  @end
  