Friday 20 July 2012

iPhone Basic UI Controls Demo

Hello fellas,

Here this post comes with some basic iphone UI controls demo. It will illustrate how to deal with
                         UILable
                         UITextField
                         UITextView
                         UIImageView
                         UIButton
                         UISteper
                         UISlider
                         UISwitch
so let's start
1. Open Xcode create new project
  Xcode ->>File->>New->>New Project
create new View Controller name it as BasicControlsVC
Xcode will automatically create
.AppDelegate.h
.AppDelegate.m
.BasicControlsVC.h
BasiccontrolsVC.m

2.Open BasicControls.h and declare your controls (see below)


#import <UIKit/UIKit.h>

@interface BasicControlsVC : UIViewController<UITextFieldDelegate,UITextViewDelegate>
{
    
    
    UIButton *button;
    UILabel *lable;
    UITextView *textview;
    UITextField *textfield;
    UISlider *slider;
    UISwitch *switchControls;
    UIStepper *stepper;
    UIImageView *imageview;
    
}

@end


3.Now Time to create these controls and performing action.
Generally creating controls refers to allocating memory and setting it's property ,so let's do that
open BasicControlsVC.m and modify your init method  as shown below

- (id)init
{
    self = [super init];
    if (self) {
        //allocate controls here..
        
        //create lable
        lable=[[UILabel alloc]init];
        [lable setFrame:CGRectMake(50, 50, 100, 30)];
        lable.text=@"This is label";
        lable.textColor=[UIColor grayColor];
        
        //create Image view
        imageview=[[UIImageView alloc]initWithFrame:CGRectMake(170, 50, 100, 80)];
        imageview.image=[UIImage imageNamed:@"lamborghini.png"];
        
        
        //create  Textfield
        textfield=[[UITextField alloc]initWithFrame:CGRectMake(50, 100, 200, 50)];
        [textfield setPlaceholder:@"this is text field"];
        textfield.delegate=self;
        
        
        //create Textview
        textview=[[UITextView alloc]initWithFrame:CGRectMake(50, 160, 200, 50)];
        [textview setText:@"This is text view"];
        textview.delegate=self;
        
        //create button
        button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        [button addTarget:self 
                   action:@selector(aMethod)
         forControlEvents:UIControlEventTouchUpInside];
        [button setTitle:@"Button" forState:UIControlStateNormal];
        [button setTintColor:[UIColor grayColor]];
        [button setTag:1];
        button.frame = CGRectMake(50, 220, 70, 30);
        
        
        
        //create slider
       
        slider = [[UISlider alloc] initWithFrame:CGRectMake(50, 300, 200, 10)];
        [slider addTarget:self action:@selector(sliderAction) forControlEvents:UIControlEventValueChanged];
        [slider setBackgroundColor:[UIColor clearColor]];
        slider.minimumValue = 0.0;
        slider.maximumValue = 50.0;
        slider.continuous = YES;
        slider.value = 20.0;
        
        //create switch control
       
        switchControls = [[UISwitch alloc] initWithFrame:CGRectMake(50, 320, 20, 20)];
        [switchControls addTarget: self action: @selector(switchmethod) forControlEvents: UIControlEventValueChanged];
       
        //create Stepper
        stepper =  [[UIStepper alloc]init];
        [stepper setFrame:CGRectMake(50, 350, 155, 25)];
        [stepper setMinimumValue:0];
        
        stepper.maximumValue = 1000;
        stepper.stepValue = 5;
        stepper.wraps = YES;
        stepper.autorepeat = YES;
        stepper.continuous = YES;
        
        
        [stepper addTarget:self action:@selector(someAction:) forControlEvents:UIControlEventValueChanged];
        
  }
    return self;
}

 Above code snippet will create these controls and  set their property 
Add your controls on BasicControlsVC by modifying your loadView method as shown below


-(void)loadView
{
    [super loadView];
    //add view to this view controller
    [self.view addSubview:lable];
    [self.view addSubview:textfield];
    [self.view addSubview:textview];
    [self.view addSubview:button];
    [self.view addSubview:imageview];
    [self.view addSubview:slider];
    [self.view addSubview:switchControls];
    [self.view addSubview:stepper];
    
    
    
}


3. addTarget:self action:@selector
you can add selector method on  contols eg. UIButton to perform an action when button clicks

[button addTarget:self 
                   action:@selector(aMethod)
         forControlEvents:UIControlEventTouchUpInside];


and ofcourse you have to implement  this aMethod

-(void)aMethod
{
    NSLog(@"button clicked");
    lable.text=@"button clicked";
    
}
 like wise here i implemented respective @selector method for UISwitch,UIStepper,UISlider



-(void)sliderAction
{
    NSLog(@"value changed");
    lable.text=@"value changed";
    
   
 }

-(void)switchmethod
{
    if(switchControls.on)
    {
    NSLog(@"ON");
        lable.text=@"ON";
    }else
    {
       NSLog(@"OFF"); 
        lable.text=@"OFF";
    }
}

- (void) someAction:(UIStepper *) stepper {
    NSLog(@"stepper clicked");
    lable.text = [NSString stringWithFormat:@"%.f", stepper.value];
}





4. Implement UITextFieldDelegate and UITextViewDelegate Method 
As you know when you are dealing with TextField or TextView in iPhone , Keyboard automatically appears and by clicking return button it hides.
To achieve this must implement these two method 


- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return NO;
}

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
    
    if([text isEqualToString:@"\n"]) {
        [textView resignFirstResponder];
        return NO;
    }
    
    return YES;
}



5. Now Build and run your Project you'll get something like that


full source code of this BasicUIControlsDemo you can grab from
here  http://www.4shared.com/zip/KeHWh86P/BasicUIControlsDemo.html


feel free to query @:    bpsingh216@gmail.com
enjoy coding :-)


No comments:

Post a Comment