| // Copyright 2017-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 "BottomAppBarTypicalUseViewController.h" |
| |
| #import "MaterialBottomAppBar.h" |
| |
| @interface BottomAppBarTypicalUseViewController () |
| |
| @end |
| |
| @implementation BottomAppBarTypicalUseViewController |
| |
| - (void)commonMDCBottomAppBarViewControllerSetup { |
| _bottomBarView = [[MDCBottomAppBarView alloc] initWithFrame:CGRectZero]; |
| _bottomBarView.autoresizingMask = |
| (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin); |
| [self.view addSubview:_bottomBarView]; |
| } |
| |
| - (void)layoutBottomAppBar { |
| CGSize size = [_bottomBarView sizeThatFits:self.view.bounds.size]; |
| CGRect bottomBarViewFrame = |
| CGRectMake(0, CGRectGetHeight(self.view.bounds) - size.height, size.width, size.height); |
| _bottomBarView.frame = bottomBarViewFrame; |
| } |
| |
| - (void)viewDidLoad { |
| [super viewDidLoad]; |
| [self commonMDCBottomAppBarViewControllerSetup]; |
| } |
| |
| - (void)viewWillLayoutSubviews { |
| [super viewWillLayoutSubviews]; |
| [self layoutBottomAppBar]; |
| } |
| |
| - (void)viewSafeAreaInsetsDidChange { |
| [super viewSafeAreaInsetsDidChange]; |
| [self layoutBottomAppBar]; |
| } |
| |
| #pragma mark - Setters |
| |
| - (void)setViewController:(UIViewController *)viewController { |
| if (viewController == _viewController) { |
| return; |
| } |
| |
| // If there is an existing content view controller, remove it. |
| if (_viewController) { |
| [_viewController willMoveToParentViewController:nil]; |
| [_viewController.view removeFromSuperview]; |
| [_viewController removeFromParentViewController]; |
| } |
| _viewController = viewController; |
| |
| CGFloat width = CGRectGetWidth(self.view.bounds); |
| CGFloat height = CGRectGetHeight(self.view.bounds); |
| |
| // Add the underlying content view controller to display beneath the bottom app bar. |
| [self addChildViewController:_viewController]; |
| _viewController.view.frame = CGRectMake(0, 0, width, height); |
| [self.view insertSubview:_viewController.view atIndex:0]; |
| [self didMoveToParentViewController:_viewController]; |
| } |
| |
| @end |