Introduction
In this article I will create a Single View application. Here I use two buttons (forward and back), two labels (Count_label, Shape_label) and one Slider from outlet. Here we add one control view where we see different shapes. When we perform an action from a button or slider it draws a shape in the control window.
To understand it we use the following.
Step 1
Open XCode by double-clicking on it.
Step 2
Create a New XCode Project by clicking on it.
Step 3
Now select a Single View Application and click on Next.
Step 4
Now provide your Product Name and Company Identifier.
Step 5
Select the location where you want to save your project and click on Create.
Step 6
Now we write the code for each class.
ViewController.h
#import <UIKit/UIKit.h>
#import "drawShapeView.h"
@interface ViewController : UIViewController
{
IBOutlet UILabel *sldrCountlbl,*shapeNamelbl ;
IBOutlet UISlider *sldr;
IBOutlet drawShapeView *shape;
NSTimer *timerForSlider;
Boolean bttnFlag,sldrFlag,flag;
}
-(IBAction)sliderMove:(id)sender;
-(IBAction)back:(id)sender;
-(IBAction)forwd:(id)sender;
@end
ViewController.m
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
bttnFlag = NO;
sldrFlag = NO;
flag= NO;
// Do any additional setup after loading the view, typically from a nib.
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
}
-(IBAction)back:(id)sender
{
//if(sldrFlag==YES)
{
bttnFlag=YES;
sldrFlag=NO;
flag = NO;
timerForSlider = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(updateSlider) userInfo:nil repeats:YES];
}
}
-(IBAction)forwd:(id)sender
{
//if(sldrFlag==YES)
{
bttnFlag=YES;
sldrFlag=NO;
flag = YES;
timerForSlider = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateSlider) userInfo:nil repeats:YES];
}
}
-(void)updateSlider
{
//[sldr setValue:sldr.value+1];
if (bttnFlag==YES && sldrFlag==NO)
{
if (flag==YES)
{
if (sldr.value==9)
{
[timerForSlider invalidate];
bttnFlag = NO;
} else
{
sldr.value = sldr.value + (int)1;
[self slider_moveAction];
}
//sldr.value = sldr.value + (int)1;
}
if(flag==NO)
{
if (sldr.value==0)
{
[timerForSlider invalidate];
bttnFlag = NO;
} else
{
sldr.value = sldr.value - (int)1;
[self slider_moveAction];
}
}
}
//sldr.value = sldr.value + (int)1;
/*if(sldr.value==9)
{
[timerForSlider invalidate];
bttnFlag = NO;
}
[self slider_moveAction];
*/
}
-(void)slider_moveAction
{
//if(sldrFlag==YES)
{
NSUInteger vertices = (NSUInteger) sldr.value;
sldrCountlbl.text = [NSString stringWithFormat:@"%d", vertices];
[shape setVertices:vertices];
if ((int)sldr.value ==(int)0)
{
shapeNamelbl.text = @"";
}
if ((int)sldr.value ==(int)1)
{
shapeNamelbl.text = @"Dot";
}
else if ((int)sldr.value ==(int)2)
{
shapeNamelbl.text = @"Line";
}
else if ((int)sldr.value ==(int)3)
{
shapeNamelbl.text = @"Triangle";
}
else if ((int)sldr.value ==(int)4)
{
shapeNamelbl.text = @"Square";
}
else if ((int)sldr.value ==(int)5)
{
shapeNamelbl.text = @"Pentagon";
}
else if ((int)sldr.value ==(int)6)
{
shapeNamelbl.text = @"Hexagon";
}
else if ((int)sldr.value ==(int)7)
{
shapeNamelbl.text = @"Heptagon";
}
else if ((int)sldr.value ==(int)8)
{
shapeNamelbl.text = @"Octagon";
}
}
}
-(IBAction)sliderMove:(id)sender
{
sldrFlag = YES;
bttnFlag = NO;
[self slider_moveAction];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
@end
drawShapeView.h
#import <UIKit/UIKit.h>
@interface drawShapeView : UIView
- (void)setVertices:(NSUInteger) vertices;
@end
drawShapeView.m
#import "drawShapeView.h"
@implementation drawShapeView
{
NSUInteger _vertices;
}
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}
- (void)setVertices:(NSUInteger) vertices
{
_vertices = vertices;
[self setNeedsDisplay];
}
- (void)drawRect:(CGRect)rect
{
CGFloat radius = self.bounds.size.width/2.5;
if (radius > self.bounds.size.height/2.5)
{
radius = self.bounds.size.height/2.5;
}
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextBeginPath(context);
if (_vertices ==(int)1)
{
CGContextClosePath(context);
//
// CGContextFillRect(context, CGRectMake(radius,radius,2,2));
CGContextFillEllipseInRect(context, CGRectMake(135, 135, 2, 2));
}
CGFloat arc = M_PI * 2.0 / _vertices;
CGContextMoveToPoint(context, self.bounds.size.width/2,
self.bounds.size.height/2 - radius);
for (NSUInteger i = 1; i < _vertices; i++)
{
CGContextAddLineToPoint(context,
self.bounds.size.width/2 + radius * sin(arc * i),
self.bounds.size.height/2 - radius * cos(arc * i));
}
CGContextClosePath(context);
CGContextSetLineWidth(context, 5.0);
CGContextStrokePath(context);
}
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
// Drawing code
}
*/
@end
Step 7
Finally we click on the Run button to show the output.
Step 8
Output 1 in iPhone:
Now we click on the Forward button.
Output 2 in iPhone:
Here increase the count in the label.
Output 3 in iPhone:
Output 4 in iPhone:
Output 5 in iPhone: