Hi All,
I am writing my first blog. so please tell me if I made any mistake.
I am going to tell how to create customize picker view for font styles , size and colors. So that user can change fonts.
First create a new view based iphone application in xcode and name it custom picker.
Then write code in customPicker.h file
#import <UIKit/UIKit.h>
@interface customPicker : UIViewController <UIPickerViewDelegate,UIPickerViewDataSource> {
IBOutlet UILabel *label ;
IBOutlet UIPickerView *picker;
NSMutableArray *colorArray;
NSMutableArray *sizeArray;
}
@property (nonatomic,retain) IBOutlet UILabel *label ;
I am writing my first blog. so please tell me if I made any mistake.
I am going to tell how to create customize picker view for font styles , size and colors. So that user can change fonts.
First create a new view based iphone application in xcode and name it custom picker.
Then write code in customPicker.h file
#import <UIKit/UIKit.h>
@interface customPicker : UIViewController <UIPickerViewDelegate,UIPickerViewDataSource> {
IBOutlet UILabel *label ;
IBOutlet UIPickerView *picker;
NSMutableArray *colorArray;
NSMutableArray *sizeArray;
}
@property (nonatomic,retain) IBOutlet UILabel *label ;
@property (nonatomic,retain) NSMutableArray *colorArray;
@property (nonatomic,retain) NSMutableArray *sizeArray;
Then write some code in customPicker.m
#import "customPicker.h"
@implementation customPicker
@synthesize colorArray ,sizeArray ,label;
- (void)viewDidLoad {
[super viewDidLoad];
// initialize color array
colorArray = [[NSMutableArray alloc] initWithObjects:@"orangeColor",@"magentaColor",@"whiteColor",@"redColor",@"blueColor",@"yellowColor",@"purpleColor",@"darkGrayColor",@"lightGrayColor",@"cyanColor",@"greenColor",@"grayColor",nil];
//initialize size array
sizeArray = [[NSMutableArray alloc] initWithObjects:@"10",@"12",@"14",@"16",@"18",@"20",@"22",@"24",@"26",@"28",@"30",@"32",nil];
[picker selectRow:1 inComponent:0 animated:YES];
}
Release properties- (void)dealloc {
[colorArray release];
[sizeArray release];
[label release];
[super dealloc];
}
Now write UIPicker View delegate method.
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView {
return 3; //number of components in picker view
}
- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component {
if (component == 0) {
return [[UIFont familyNames] count]; //this is to load font family
}
else if(component == 1) {
return [colorArray count]; //color array count in 2nd component
}
else {
return [sizeArray count]; //size array count in 3rd component
}
}
//set the titles of components in pickerview
- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
switch (component) {
case 0:
return [[UIFont familyNames]objectAtIndex:row];
break;
case 1:
return [colorArray objectAtIndex:row];
break;
case 2:
return [sizeArray objectAtIndex:row];
break;
}
return nil;
}
//picker view did select method
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
NSLog(@"%@,%@",[colorArray objectAtIndex:[picker selectedRowInComponent:1]],[[UIFont familyNames] objectAtIndex:[picker selectedRowInComponent:0]]);
NSString *font ;
NSString *strFont;;
CGFloat testing ;
font = [NSString stringWithFormat:@"%@",[[UIFont familyNames]objectAtIndex:[picker selectedRowInComponent:0]]];
strFont = [NSString stringWithFormat:@"%@",[sizeArray objectAtIndex:[picker selectedRowInComponent:2]]];
testing = [strFont floatValue];
NSLog(@"My Float Value is :- %f",testing);
NSString *strMyColor =[NSString stringWithFormat:@"%@",[colorArray objectAtIndex:[picker selectedRowInComponent:1]]];
//get color name from pickerview
SEL blackSel = NSSelectorFromString(strMyColor);
UIColor* tColor = nil;
if ([UIColor respondsToSelector: blackSel])
tColor = [UIColor performSelector:blackSel];
[label setTextColor:tColor];
label.font = [UIFont fontWithName:font size:testing];
}
//And if you want to change the width of picker view
- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component{
switch (component){
case 0:
return 150.0f;
case 1:
return 110.0f;
case 2:
return 40.0f;
}
return 0;
}
Now open customPicker.xib file and connect iboutlet with label and picker view .
connect delegate with picker view and test the app.
Thanks..