mirror of
https://github.com/material-components/material-components-ios.git
synced 2026-02-20 08:27:32 +08:00
Renaming each of the example view controllers to include "ExampleViewController" so they're easier to find. This is closer to our typical naming pattern for example view controllers.
180 lines
6.4 KiB
Objective-C
180 lines
6.4 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.
|
|
|
|
/* IMPORTANT:
|
|
This file contains supplemental code used to populate the examples with dummy data and/or
|
|
instructions. It is not necessary to import this file to use Material Components for iOS.
|
|
*/
|
|
|
|
#import "ActivityIndicatorExampleViewControllerSupplemental.h"
|
|
|
|
#import "MaterialTypography.h"
|
|
|
|
#define MDC_CATALOG_GREEN [UIColor colorWithRed:0 green:0xe6 / 255.0f blue:0x76 / 255.0f alpha:1]
|
|
|
|
static NSString *const kCell = @"Cell";
|
|
|
|
@implementation ActivityIndicatorExampleViewController (CatalogByConvention)
|
|
|
|
+ (NSDictionary *)catalogMetadata {
|
|
return @{
|
|
@"breadcrumbs" : @[ @"Activity Indicator", @"Activity Indicator" ],
|
|
@"description" :
|
|
@"Activity Indicator is a visual indication of an app loading content. "
|
|
@"It can display how long an operation will take or visualize an unspecified wait time.",
|
|
@"primaryDemo" : @YES,
|
|
@"presentable" : @YES
|
|
};
|
|
}
|
|
|
|
@end
|
|
|
|
@implementation ActivityIndicatorExampleViewController (Supplemental)
|
|
|
|
- (void)setupExampleViews {
|
|
[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:kCell];
|
|
|
|
// Set up container view of three activity indicators.
|
|
UIView *indicators =
|
|
[[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 160)];
|
|
indicators.autoresizingMask = UIViewAutoresizingFlexibleWidth;
|
|
|
|
[indicators addSubview:self.activityIndicator1];
|
|
[indicators addSubview:self.activityIndicator2];
|
|
[indicators addSubview:self.activityIndicator3];
|
|
|
|
self.activityIndicator1.center =
|
|
CGPointMake(indicators.bounds.size.width / 3, indicators.bounds.size.height / 2);
|
|
self.activityIndicator1.autoresizingMask =
|
|
(UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin);
|
|
self.activityIndicator2.center =
|
|
CGPointMake(indicators.bounds.size.width / 2, indicators.bounds.size.height / 2);
|
|
self.activityIndicator2.autoresizingMask =
|
|
(UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin);
|
|
self.activityIndicator3.center =
|
|
CGPointMake(2 * indicators.bounds.size.width / 3, indicators.bounds.size.height / 2);
|
|
self.activityIndicator3.autoresizingMask =
|
|
(UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin);
|
|
|
|
self.indicators = indicators;
|
|
|
|
self.onSwitch = [[UISwitch alloc] init];
|
|
[self.onSwitch setOn:YES];
|
|
[self.onSwitch addTarget:self
|
|
action:@selector(didChangeOnSwitch:)
|
|
forControlEvents:UIControlEventValueChanged];
|
|
|
|
self.modeSwitch = [[UISwitch alloc] init];
|
|
[self.modeSwitch setOn:YES];
|
|
[self.modeSwitch addTarget:self
|
|
action:@selector(didChangeModeSwitch:)
|
|
forControlEvents:UIControlEventValueChanged];
|
|
|
|
CGRect sliderFrame = CGRectMake(0, 0, 160, 27);
|
|
self.slider = [[UISlider alloc] initWithFrame:sliderFrame];
|
|
self.slider.value = (float)kActivityInitialProgress;
|
|
[self.slider addTarget:self
|
|
action:@selector(didChangeSliderValue:)
|
|
forControlEvents:UIControlEventValueChanged];
|
|
|
|
self.activityIndicator1.progress = self.slider.value;
|
|
self.activityIndicator2.progress = self.slider.value;
|
|
self.activityIndicator3.progress = self.slider.value;
|
|
|
|
[self.activityIndicator1 startAnimating];
|
|
[self.activityIndicator2 startAnimating];
|
|
[self.activityIndicator3 startAnimating];
|
|
|
|
self.tableView.layoutMargins = UIEdgeInsetsZero;
|
|
self.tableView.separatorInset = UIEdgeInsetsZero;
|
|
}
|
|
|
|
- (void)didChangeOnSwitch:(UISwitch *)onSwitch {
|
|
if (onSwitch.on) {
|
|
[self.activityIndicator1 startAnimating];
|
|
[self.activityIndicator2 startAnimating];
|
|
[self.activityIndicator3 startAnimating];
|
|
} else {
|
|
[self.activityIndicator1 stopAnimating];
|
|
[self.activityIndicator2 stopAnimating];
|
|
[self.activityIndicator3 stopAnimating];
|
|
}
|
|
}
|
|
|
|
- (void)didChangeModeSwitch:(UISwitch *)switchControl {
|
|
if (switchControl.on) {
|
|
self.activityIndicator2.indicatorMode = MDCActivityIndicatorModeDeterminate;
|
|
self.activityIndicator3.indicatorMode = MDCActivityIndicatorModeDeterminate;
|
|
} else {
|
|
self.activityIndicator2.indicatorMode = MDCActivityIndicatorModeIndeterminate;
|
|
self.activityIndicator3.indicatorMode = MDCActivityIndicatorModeIndeterminate;
|
|
}
|
|
}
|
|
|
|
- (void)didChangeSliderValue:(UISlider *)slider {
|
|
self.activityIndicator1.progress = slider.value;
|
|
self.activityIndicator2.progress = slider.value;
|
|
self.activityIndicator3.progress = slider.value;
|
|
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:1
|
|
inSection:0]];
|
|
cell.textLabel.text = [NSString stringWithFormat:@"%.00f%%", slider.value * 100];
|
|
[cell setNeedsDisplay];
|
|
}
|
|
|
|
#pragma mark -
|
|
|
|
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
|
|
return 4;
|
|
}
|
|
|
|
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
|
|
if (indexPath.row == 0) {
|
|
return 160;
|
|
}
|
|
|
|
return 56;
|
|
}
|
|
|
|
- (UITableViewCell *)tableView:(UITableView *)tableView
|
|
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
|
|
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kCell
|
|
forIndexPath:indexPath];
|
|
cell.textLabel.text = @"";
|
|
cell.selectionStyle = UITableViewCellSelectionStyleNone;
|
|
switch (indexPath.row) {
|
|
case 0:
|
|
cell.accessoryView = nil;
|
|
cell.textLabel.text = nil;
|
|
[cell addSubview:self.indicators];
|
|
break;
|
|
case 1:
|
|
cell.accessoryView = self.slider;
|
|
cell.textLabel.text = @"Progress";
|
|
break;
|
|
case 2:
|
|
cell.accessoryView = self.onSwitch;
|
|
cell.textLabel.text = @"Show Indicator";
|
|
break;
|
|
case 3:
|
|
cell.accessoryView = self.modeSwitch;
|
|
cell.textLabel.text = @"Show Determinate";
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return cell;
|
|
}
|
|
|
|
@end
|