@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *label;
@property (weak, nonatomic) IBOutlet UIPickerView *pickerView;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.pickerView.dataSource = self;
self.pickerView.delegate = self;
self.fontNames= [UIFont familyNames];
self.fontSize = @[@10.0,@12.0,@14.0,@16.0,@18.0];
self.fontColors = @[
@{@"name":@"红色",@"color":[UIColor redColor]},
@{@"name":@"白色",@"color":[UIColor whiteColor]},
@{@"name":@"黄色",@"color":[UIColor yellowColor]},
@{@"name":@"绿色",@"color":[UIColor greenColor]},
@{@"name":@"蓝色",@"color":[UIColor blueColor]},
];
//同步label的字体设置
UIFont *font = [UIFont fontWithName:self.fontNames[0] size:[self.fontSize[0]floatValue]];
self.label.font = font;
self.label.textColor = [self.fontColors[0] objectForKey:@"color"];
}
#pragma mark - datasource
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 3;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
//135
// return component ==0?1:3;
// return component == 2?3:component ==0?1:2;
// return component == 2?self.fontColors.count:component ==0 ? self.fontNames.count : self.fontSize.count;
switch (component)
{
case 0:
return self.fontNames.count;
case 1:
return self.fontSize.count;
case 2:
return self.fontColors.count;
}
return 0;
}
#pragma mark -delegate
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
NSString *str = nil;
switch (component)
{
case 0:
str = self.fontNames[row];
break;
case 1:
str = [NSString stringWithFormat:@"%1.f",[self.fontSize[row] floatValue]];
break;
case 2:
str = [self.fontColors[row] objectForKey:@"name"];
break;
}
return str;
}
#pragma mark 设置每一列的宽度
-(CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component
{
CGFloat width = 0.0;
switch (component)
{
case 0:
width = 180;
break;
case 1:
width = 70;
break;
case 2:
width = 70;
break;
}
return width;
}
#pragma mark 在选择了某列某行后的操作
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
switch (component)
{
case 0:
{
int row2 = [pickerView selectedRowInComponent:1];
UIFont *font = [UIFont fontWithName:self.fontNames[row] size:[self.fontSize[row2] floatValue]];
self.label.font = font;
break;
}
case 1:
{
int row1 = [pickerView selectedRowInComponent:0];
UIFont *font = [UIFont fontWithName:self.fontNames[row1] size:[self.fontSize[row] floatValue]];
self.label.font = font;
break;
}
case 2:
self.label.textColor = [self.fontColors[row] objectForKey:@"color"];
break;