mirror of
https://github.com/material-components/material-components-ios.git
synced 2026-02-20 08:27:32 +08:00
* [Chips] Stateful ink * Fix floating point conversion errors * Default ink color to MDCInkView.defaultInkColor * Deprecate inkColor property * Clarify inkColorForState behavior * Ensure Chip inkcolor is never set to a bad value * Chips ink color tests
134 lines
4.6 KiB
Objective-C
134 lines
4.6 KiB
Objective-C
/*
|
|
Copyright 2018-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 "ChipsExamplesSupplemental.h"
|
|
|
|
#import "MaterialChips.h"
|
|
|
|
@implementation ChipsCustomizedExampleViewController {
|
|
UICollectionView *_collectionView;
|
|
MDCChipView *_sizingChip;
|
|
}
|
|
|
|
+ (void)configureChip:(MDCChipView *)chip {
|
|
UIFont *customTitleFont = [UIFont fontWithName:@"ChalkDuster" size:14.0f];
|
|
chip.titleFont = customTitleFont;
|
|
|
|
UIColor *customColor = [UIColor blueColor];
|
|
[chip setTitleColor:customColor forState:UIControlStateNormal];
|
|
[chip setBorderColor:customColor forState:UIControlStateNormal];
|
|
[chip setBorderWidth:2.0f forState:UIControlStateNormal];
|
|
[chip setInkColor:[customColor colorWithAlphaComponent:0.2f] forState:UIControlStateNormal];
|
|
|
|
UIColor *customSelectedColor = [UIColor orangeColor];
|
|
[chip setTitleColor:customSelectedColor forState:UIControlStateSelected];
|
|
[chip setBorderColor:customSelectedColor forState:UIControlStateSelected];
|
|
[chip setBorderWidth:4.0f forState:UIControlStateSelected];
|
|
[chip setInkColor:[customSelectedColor colorWithAlphaComponent:0.2f]
|
|
forState:UIControlStateSelected];
|
|
[chip setInkColor:[customSelectedColor colorWithAlphaComponent:0.2f]
|
|
forState:UIControlStateSelected|UIControlStateHighlighted];
|
|
}
|
|
|
|
- (void)loadView {
|
|
[super loadView];
|
|
|
|
MDCChipCollectionViewFlowLayout *layout = [[MDCChipCollectionViewFlowLayout alloc] init];
|
|
layout.minimumInteritemSpacing = 10;
|
|
|
|
_collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
|
|
_collectionView.dataSource = self;
|
|
_collectionView.delegate = self;
|
|
_collectionView.allowsMultipleSelection = YES;
|
|
_collectionView.backgroundColor = [UIColor whiteColor];
|
|
_collectionView.delaysContentTouches = NO;
|
|
_collectionView.contentInset = UIEdgeInsetsMake(4, 8, 4, 8);
|
|
[_collectionView registerClass:[MDCChipCollectionViewCell class]
|
|
forCellWithReuseIdentifier:@"MDCChipCollectionViewCell"];
|
|
|
|
_sizingChip = [[MDCChipView alloc] init];
|
|
[[self class] configureChip:_sizingChip];
|
|
|
|
[self.view addSubview:_collectionView];
|
|
}
|
|
|
|
- (void)viewWillLayoutSubviews {
|
|
[super viewWillLayoutSubviews];
|
|
|
|
_collectionView.frame = self.view.bounds;
|
|
}
|
|
|
|
- (NSInteger)collectionView:(UICollectionView *)collectionView
|
|
numberOfItemsInSection:(NSInteger)section {
|
|
return self.titles.count;
|
|
}
|
|
|
|
- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
|
|
cellForItemAtIndexPath:(NSIndexPath *)indexPath {
|
|
MDCChipCollectionViewCell *cell =
|
|
[collectionView dequeueReusableCellWithReuseIdentifier:@"MDCChipCollectionViewCell"
|
|
forIndexPath:indexPath];
|
|
|
|
[[self class] configureChip:cell.chipView];
|
|
cell.chipView.titleLabel.text = self.titles[indexPath.row];
|
|
cell.chipView.selectedImageView.image = [self doneImage];
|
|
cell.alwaysAnimateResize = YES;
|
|
|
|
return cell;
|
|
}
|
|
|
|
- (CGSize)collectionView:(UICollectionView *)collectionView
|
|
layout:(UICollectionViewLayout*)collectionViewLayout
|
|
sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
|
|
NSArray *selectedPaths = [collectionView indexPathsForSelectedItems];
|
|
_sizingChip.selected = [selectedPaths containsObject:indexPath];
|
|
_sizingChip.titleLabel.text = self.titles[indexPath.row];
|
|
_sizingChip.selectedImageView.image = [self doneImage];
|
|
return [_sizingChip sizeThatFits:collectionView.bounds.size];
|
|
}
|
|
|
|
- (void)collectionView:(UICollectionView *)collectionView
|
|
didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
|
|
[collectionView performBatchUpdates:nil completion:nil];
|
|
}
|
|
|
|
- (void)collectionView:(UICollectionView *)collectionView
|
|
didDeselectItemAtIndexPath:(NSIndexPath *)indexPath {
|
|
[collectionView performBatchUpdates:nil completion:nil];
|
|
}
|
|
|
|
- (NSArray *)titles {
|
|
if (!_titles) {
|
|
_titles = @[
|
|
@"Doorman",
|
|
@"Elevator",
|
|
@"Garage Parking",
|
|
@"Gym",
|
|
@"Laundry in Building",
|
|
@"Green Building",
|
|
@"Parking Available",
|
|
@"Pets Allowed",
|
|
@"Pied-a-Terre Allowed",
|
|
@"Swimming Pool",
|
|
@"Smoke-free",
|
|
];
|
|
}
|
|
return _titles;
|
|
}
|
|
|
|
@end
|
|
|