mirror of
https://github.com/material-components/material-components-ios.git
synced 2026-02-20 08:27:32 +08:00
* [Themes] Remove unnecessary imports. * [TextFields] Remove unnecessary imports. * [Typography] Do not use an umbrella header inside of a component. * [Snackbar] Do not use self umbrella header. * [ActivityIndicator] Do not use self umbrella header. * [AppBar] Use umbrella headers. * [AppBar] Remove self import header. * [ButtonBar] Removed self umbrella header imports. * [Buttons] Removed self umbrella header imports. * [Collections] Update imports. * [Dialogs] Moved import into an m file. * [Collections] Fixed imports. * [FeatureHighlight] Removed self umbrealla imports. * [HeaderStackView] Reordered imports. * [Ink] Replaced imports with forward declarations. * [Slider] Replaced self umbrella import use. * [Snackbar] Removed self umbrella header import. * [Tabs] Changed math import. Replaced self umbrella header import. * [Icons] Removed unnecessary imports. * [Overlay] Replaced umbrella header import. * [ShapeLibrary] Replace Shapes imports with an umbrella header. * [Shapes] Replaced imports with forward declarations. * [AppBar] Replace import with a forward declaration. * [Examples] Updated imports. * Fixed conflicting imports * Added space between different import categories
136 lines
4.9 KiB
Objective-C
136 lines
4.9 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>
|
|
|
|
#import "MaterialAppBar.h"
|
|
#import "MaterialButtons.h"
|
|
#import "MaterialCollections.h"
|
|
#import "MaterialTabs.h"
|
|
#import "supplemental/TabBarTextOnlyExampleSupplemental.h"
|
|
|
|
@implementation TabBarTextOnlyExample
|
|
|
|
- (id)initWithCollectionViewLayout:(UICollectionViewLayout *)layout {
|
|
self = [super initWithCollectionViewLayout:layout];
|
|
if (self) {
|
|
[self setupExampleViews:@[@"Change Alignment", @"Toggle Case", @"Clear Selection"]];
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (void)viewDidLoad {
|
|
[super viewDidLoad];
|
|
[self loadTabBar];
|
|
self.appBar.headerStackView.bottomBar = self.tabBar;
|
|
}
|
|
|
|
#pragma mark - Action
|
|
|
|
- (void)toggleCase:(id)sender {
|
|
self.tabBar.displaysUppercaseTitles = !self.tabBar.displaysUppercaseTitles;
|
|
}
|
|
|
|
- (void)clearSelection:(id)sender {
|
|
self.tabBar.selectedItem = nil;
|
|
}
|
|
|
|
#pragma mark - Private
|
|
|
|
- (void)loadTabBar {
|
|
const CGRect bounds = self.view.bounds;
|
|
|
|
// Long tab bar with lots of items of varying length. Also demonstrates configurable accent color.
|
|
self.tabBar =
|
|
[[MDCTabBar alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(bounds) - 20.0f, 0)];
|
|
self.tabBar.items = @[
|
|
[[UITabBarItem alloc] initWithTitle:@"This Is" image:nil tag:0],
|
|
[[UITabBarItem alloc] initWithTitle:@"A" image:nil tag:0],
|
|
[[UITabBarItem alloc] initWithTitle:@"Tab Bar" image:nil tag:0],
|
|
[[UITabBarItem alloc] initWithTitle:@"With" image:nil tag:0],
|
|
[[UITabBarItem alloc] initWithTitle:@"A Variety of Titles of Varying Length That Might Be Long"
|
|
image:nil
|
|
tag:0],
|
|
];
|
|
|
|
// Give change the selected item tint color and the tab bar tint color. For other color properties
|
|
// rely on the UIAppearance proxy.
|
|
self.tabBar.selectedItemTintColor = [UIColor whiteColor];
|
|
self.tabBar.tintColor = [UIColor colorWithWhite:1.0f alpha:0.5f];
|
|
|
|
self.tabBar.autoresizingMask =
|
|
UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin;
|
|
[self.tabBar sizeToFit];
|
|
}
|
|
|
|
- (void)changeAlignment:(id)sender {
|
|
UIAlertController *sheet =
|
|
[UIAlertController alertControllerWithTitle:nil
|
|
message:nil
|
|
preferredStyle:UIAlertControllerStyleActionSheet];
|
|
[sheet addAction:[UIAlertAction actionWithTitle:@"Leading"
|
|
style:UIAlertActionStyleDefault
|
|
handler:^(UIAlertAction *_Nonnull action) {
|
|
[self setAlignment:MDCTabBarAlignmentLeading];
|
|
}]];
|
|
[sheet addAction:[UIAlertAction actionWithTitle:@"Center"
|
|
style:UIAlertActionStyleDefault
|
|
handler:^(UIAlertAction *_Nonnull action) {
|
|
[self setAlignment:MDCTabBarAlignmentCenter];
|
|
}]];
|
|
[sheet addAction:[UIAlertAction actionWithTitle:@"Justified"
|
|
style:UIAlertActionStyleDefault
|
|
handler:^(UIAlertAction *_Nonnull action) {
|
|
[self setAlignment:MDCTabBarAlignmentJustified];
|
|
}]];
|
|
[sheet addAction:[UIAlertAction actionWithTitle:@"Selected Center"
|
|
style:UIAlertActionStyleDefault
|
|
handler:^(UIAlertAction *_Nonnull action) {
|
|
[self setAlignment:MDCTabBarAlignmentCenterSelected];
|
|
}]];
|
|
[self presentViewController:sheet animated:YES completion:nil];
|
|
}
|
|
|
|
- (void)setAlignment:(MDCTabBarAlignment)alignment {
|
|
[self.tabBar setAlignment:alignment animated:YES];
|
|
}
|
|
|
|
#pragma mark - Options in Collection View
|
|
|
|
|
|
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
|
|
[super collectionView:collectionView didSelectItemAtIndexPath:indexPath];
|
|
switch (indexPath.row) {
|
|
case 0:
|
|
[self changeAlignment:collectionView];
|
|
break;
|
|
|
|
case 1:
|
|
[self toggleCase:collectionView];
|
|
break;
|
|
|
|
case 2:
|
|
[self clearSelection:collectionView];
|
|
break;
|
|
|
|
default:
|
|
// Unsupported
|
|
break;
|
|
}
|
|
}
|
|
|
|
@end
|