| // 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 "ActivityIndicatorExampleSupplemental.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 ActivityIndicatorExample (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 ActivityIndicatorExample (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 |