ButtonPressed example in iPhone.

This is the ButtonPressed example. This is the very simple example. In this example we will see after pressing button message will display and dragging in the screen message will hide. So let see how it will worked. Another ButtonPress example you can find out from here ButtonPressed

Step 1: Open the Xcode, Create a new project using View base application. Give the application “ButtonFun_View”.

Step 2: Xcode automatically creates the directory structure and adds essential frameworks to it. You can explore the directory structure to check out the content of the directory.

Step 3: Xpand classes and notice Interface Builder created the ButtonPressViewController class for you and generated a separate nib, ButtonFun_ViewViewController.xib for the “ButtonFun_View”.

Step 4: Open the ButtonFun_ViewViewController.h file and make the following chanages:

#import <UIKit/UIKit.h>

@interface ButtonFun_ViewViewController : UIViewController {

IBOutlet UIButton *button;
IBOutlet UILabel *label;
}

@property (nonatomic, retain) UIButton *button;
@property (nonatomic, retain) UILabel *label;
(IBAction) buttonPressed;

@end

Step 5: Double click the ButtonFun_ViewViewController.xib file and open it to the Interface Builder. First drag the Round Rect button from the library and place it to the view window, next drag the label from the library and place it to the view window. Select the Round Rect button and bring up Connection Inspector and connect Touch up Inside to the Files Owner icon and select buttonPressed: method. and connect Files Owner icon to the label and select label. Now save the .xib file, save it and go back to the Xcode.

Step 6: In the ButtonFun_ViewViewController.m file make the following changes:

#import "ButtonFun_ViewViewController.h"

@implementation ButtonFun_ViewViewController

@synthesize button;
@synthesize label;

(IBAction) buttonPressed {
label.text = @"Drag to hide label.";
}

(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{

button.hidden = YES;
label.hidden = YES;
}

(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
button.hidden = NO;
label.hidden = NO;
label.text = @"";
}

(void)dealloc
{
[super dealloc];
}

(void)didReceiveMemoryWarning
{
// Releases the view if it doesn’t have a superview.
[super didReceiveMemoryWarning];

// Release any cached data, images, etc that aren’t in use.
}

#pragma mark – View lifecycle

/*
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
– (void)viewDidLoad
{
[super viewDidLoad];
}
*/

(void)viewDidUnload
{
[super viewDidUnload];

}

(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

@end

Step 7: Now compile and run the application on the Simulator.

You can Download SourceCode from here ButtonFun_View

ButtonPressed example in iPhone.

This is the ButtonPressed example. This is the very simple example. In this example we will see after pressing button message will display and dragging in the screen message will hide. So let see how it will worked. Another ButtonPress example you can find out from here ButtonPressed

Step 1: Open the Xcode, Create a new project using View base application. Give the application “ButtonFun_View”.

Step 2: Xcode automatically creates the directory structure and adds essential frameworks to it. You can explore the directory structure to check out the content of the directory.

Step 3: Xpand classes and notice Interface Builder created the ButtonPressViewController class for you and generated a separate nib, ButtonFun_ViewViewController.xib for the “ButtonFun_View”.

Step 4: Open the ButtonFun_ViewViewController.h file and make the following chanages:

#import <UIKit/UIKit.h>

@interface ButtonFun_ViewViewController : UIViewController {

IBOutlet UIButton *button;
IBOutlet UILabel *label;
}

@property (nonatomic, retain) UIButton *button;
@property (nonatomic, retain) UILabel *label;
(IBAction) buttonPressed;

@end

Step 5: Double click the ButtonFun_ViewViewController.xib file and open it to the Interface Builder. First drag the Round Rect button from the library and place it to the view window, next drag the label from the library and place it to the view window. Select the Round Rect button and bring up Connection Inspector and connect Touch up Inside to the Files Owner icon and select buttonPressed: method. and connect Files Owner icon to the label and select label. Now save the .xib file, save it and go back to the Xcode.

Step 6: In the ButtonFun_ViewViewController.m file make the following changes:

#import "ButtonFun_ViewViewController.h"

@implementation ButtonFun_ViewViewController

@synthesize button;
@synthesize label;

(IBAction) buttonPressed {
label.text = @"Drag to hide label.";
}

(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{

button.hidden = YES;
label.hidden = YES;
}

(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
button.hidden = NO;
label.hidden = NO;
label.text = @"";
}

(void)dealloc
{
[super dealloc];
}

(void)didReceiveMemoryWarning
{
// Releases the view if it doesn’t have a superview.
[super didReceiveMemoryWarning];

// Release any cached data, images, etc that aren’t in use.
}

#pragma mark – View lifecycle

/*
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
– (void)viewDidLoad
{
[super viewDidLoad];
}
*/

(void)viewDidUnload
{
[super viewDidUnload];

}

(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

@end

Step 7: Now compile and run the application on the Simulator.

You can Download SourceCode from here ButtonFun_View

ButtonPressed example in iPhone.

This is the ButtonPressed example. This is the very simple example. In this example we will see after pressing button message will display and dragging in the screen message will hide. So let see how it will worked. Another ButtonPress example you can find out from here ButtonPressed

Step 1: Open the Xcode, Create a new project using View base application. Give the application “ButtonFun_View”.

Step 2: Xcode automatically creates the directory structure and adds essential frameworks to it. You can explore the directory structure to check out the content of the directory.

Step 3: Xpand classes and notice Interface Builder created the ButtonPressViewController class for you and generated a separate nib, ButtonFun_ViewViewController.xib for the “ButtonFun_View”.

Step 4: Open the ButtonFun_ViewViewController.h file and make the following chanages:

#import <UIKit/UIKit.h>

@interface ButtonFun_ViewViewController : UIViewController {

IBOutlet UIButton *button;
IBOutlet UILabel *label;
}

@property (nonatomic, retain) UIButton *button;
@property (nonatomic, retain) UILabel *label;
(IBAction) buttonPressed;

@end

Step 5: Double click the ButtonFun_ViewViewController.xib file and open it to the Interface Builder. First drag the Round Rect button from the library and place it to the view window, next drag the label from the library and place it to the view window. Select the Round Rect button and bring up Connection Inspector and connect Touch up Inside to the Files Owner icon and select buttonPressed: method. and connect Files Owner icon to the label and select label. Now save the .xib file, save it and go back to the Xcode.

Step 6: In the ButtonFun_ViewViewController.m file make the following changes:

#import "ButtonFun_ViewViewController.h"

@implementation ButtonFun_ViewViewController

@synthesize button;
@synthesize label;

(IBAction) buttonPressed {
label.text = @"Drag to hide label.";
}

(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{

button.hidden = YES;
label.hidden = YES;
}

(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
button.hidden = NO;
label.hidden = NO;
label.text = @"";
}

(void)dealloc
{
[super dealloc];
}

(void)didReceiveMemoryWarning
{
// Releases the view if it doesn’t have a superview.
[super didReceiveMemoryWarning];

// Release any cached data, images, etc that aren’t in use.
}

#pragma mark – View lifecycle

/*
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
– (void)viewDidLoad
{
[super viewDidLoad];
}
*/

(void)viewDidUnload
{
[super viewDidUnload];

}

(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

@end

Step 7: Now compile and run the application on the Simulator.

You can Download SourceCode from here ButtonFun_View

Time Converter Application in iPhone

This is the Time Converter application. Using this application we can can convert time like, Hour to Minute, Hour to Second. So let see how it will worked. My previous topic reference you can find out from here PickerView Programmatically

Step 1: Open the Xcode, Create a new project using View Base application. Give the application “PickerView_usingButtonPress”.

Step 2: Xcode automatically creates the directory structure and adds essential frameworks to it. You can explore the directory structure to check out the content of the directory.

Step 3: We need to add images in the resource folder.

Step 4: Open the PickerView_usingButtonPress.h file and make the following changes:

#import <UIKit/UIKit.h>

@interface PickerView_UsingButtonPressViewController : UIViewController {

NSMutableArray *array_from;
NSMutableArray *array_to;
UIPickerView *fromPickerView;
UIPickerView *toPickerView;
UIButton *doneButton ;
UITextField *fromButton;
UIButton *button1;

UIImageView *m_objBackgroundView;

UITextField *toTextButton;
UIButton *toButton;

IBOutlet UILabel*resultLabel;
IBOutlet UITextField *valueData;
IBOutlet UILabel*UnitLabel;

}
@property(nonatomic,retain) IBOutlet UITextField *fromButton;
@property(nonatomic,retain) IBOutlet   UIButton *button1;
@property(nonatomic,retain) IBOutlet UITextField *toTextButton;
@property(nonatomic,retain) IBOutlet   UIButton *toButton;

(IBAction)FromButton:(id)sender;
(IBAction)ToButton:(id)sender;
(IBAction)Calculation:(id)sender;

@end

Step 5: Double click the PickerView_usingButtonPress.xib file and open it to the Interface Builder. First drag the three label from the library and place it to the view window. Give the label name Value:, From: and To: . And drag the three  TextField from the library and place it to the view window. Connect Files Owner icon to the textfield and select valueData, fromButton and toTextButton. Now drag the Round Rect Button from the library and place it to the view window. Select the Round Rect Button and bring up Connection Inspector and connect Touch Up inside to the File’s Owner icon and select Calculation: method. Now save the .xib file, close it and go back to the Xcode.

Step 6: In the PickerView_usingButtonPress.m file and make the following changes:

#import "PickerView_UsingButtonPressViewController.h"

#define kPICKERCOLUMN 1
#define kFROMPICKERTAG 20
#define kTOPICKERTAG 21

@implementation PickerView_UsingButtonPressViewController

@synthesize fromButton,button1,toTextButton,toButton;

(IBAction)ToButton:(id)sender
{
 
    toPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 200, 320, 200)];
    toPickerView.tag = kTOPICKERTAG;
   
    [self.view addSubview:toPickerView];
    toPickerView.delegate = self;
    toPickerView.showsSelectionIndicator = YES;
   
    doneButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [doneButton addTarget:self
                   action:@selector(ToPickerViewRemove:)
         forControlEvents:UIControlEventTouchDown];
    doneButton.frame = CGRectMake(265.0,202.0,  52.0, 30.0);
    UIImage *img = [UIImage imageNamed:@"done.png"];
    [doneButton setImage:img forState:UIControlStateNormal];
   
    [img release];
   
    [self.view addSubview:doneButton];
   
     
}

(IBAction)FromButton:(id)sender
{
    fromPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 200, 320, 200)];
    fromPickerView.tag = kFROMPICKERTAG;
    [self.view addSubview:fromPickerView];
    fromPickerView.delegate = self;
    fromPickerView.showsSelectionIndicator = YES;
   
    doneButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [doneButton addTarget:self
                   action:@selector(FromPickerViewRemove:)
         forControlEvents:UIControlEventTouchDown];
    doneButton.frame = CGRectMake(265.0,202.0,  52.0, 30.0);
    UIImage *img = [UIImage imageNamed:@"done.png"];
    [doneButton setImage:img forState:UIControlStateNormal];
   
    [img release];
   
    [self.view addSubview:doneButton];
 
}

(IBAction)ToPickerViewRemove:(id)sender
{
    [toPickerView removeFromSuperview];
    [doneButton removeFromSuperview];
    [m_objBackgroundView removeFromSuperview];
}

(IBAction)FromPickerViewRemove:(id)sender
{
    [fromPickerView removeFromSuperview];
    [doneButton removeFromSuperview];
    [m_objBackgroundView removeFromSuperview];
}

(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

(void)dealloc
{
    [super dealloc];
}

(void)didReceiveMemoryWarning
{
    // Releases the view if it doesn’t have a superview.
    [super didReceiveMemoryWarning];
   
    // Release any cached data, images, etc that aren’t in use.
}

#pragma mark – View lifecycle

(void)viewDidLoad
{
    [super viewDidLoad];
   
    array_from=[[NSMutableArray alloc]initWithObjects:@"Hour",nil];
   array_to=[[NSMutableArray alloc]initWithObjects:@"Hour",@"Minute",@"Second",nil];

    [super viewDidLoad];
   
 
}

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

(void)viewDidUnload
{
    [super viewDidUnload];
   
}

(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
   
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
   
    if (pickerView.tag == kFROMPICKERTAG)
        return [array_from count];
    else
        return [array_to count];
}

(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
    return kPICKERCOLUMN;
}

(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
   
   
    if (pickerView.tag == kFROMPICKERTAG){
             
        [fromButton setText:[NSString stringWithFormat:@"%@",[array_from objectAtIndex:[pickerView selectedRowInComponent:0]]]];
       
       
    }
    else{
       
         [toTextButton setText:[NSString stringWithFormat:@"%@",[array_to objectAtIndex:[pickerView selectedRowInComponent:0]]]];
    }
   
}

(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    if (pickerView.tag == kFROMPICKERTAG){    
               
        return [array_from objectAtIndex:row];
      }
       
    else{
               
        return [array_to objectAtIndex:row];
    }
     
}

(IBAction)Calculation:(id)sender{
   
    NSString *tempString=fromButton.text;
    NSString *tempString1=toTextButton.text;
   
    NSString *string=@"Hour";
    NSString *string1=@"Minute";
    NSString *string2=@"Second";
   
   
    // From Hour To Hour
   
    if([tempString isEqualToString:string] && [tempString1 isEqualToString:string]){
       
        resultLabel = [[UILabel alloc]initWithFrame:CGRectMake(104, 300, 187, 20)];
        resultLabel.text =  valueData.text;
        [self.view addSubview:resultLabel];
        UnitLabel = [[UILabel alloc]initWithFrame:CGRectMake(104, 321, 187, 20)];
        UnitLabel.text = @"hour";
        [self.view addSubview:UnitLabel];
    }
   
    // From Hour To Minute
   
    if([tempString isEqualToString:string] && [tempString1 isEqualToString:string1]){
        int Result;
        NSString *str;
        int x = [valueData.text intValue];
        Result = (60*x);
        str = [NSString stringWithFormat:@"%d", Result];
        resultLabel = [[UILabel alloc]initWithFrame:CGRectMake(104, 300, 187, 20)];
        resultLabel.text =  str;
        [self.view addSubview:resultLabel];
       
        UnitLabel = [[UILabel alloc]initWithFrame:CGRectMake(104, 321, 187, 20)];
        UnitLabel.text = @"minute";
        [self.view addSubview:UnitLabel];
       
    }
   
    //  From Hour To Second
   
    if([tempString isEqualToString:string] && [tempString1 isEqualToString:string2]){
        int Result;
        int x = [valueData.text intValue];
        Result = (60*60*x);
        NSString *str;
        str = [NSString stringWithFormat:@"%d", Result];
        resultLabel = [[UILabel alloc]initWithFrame:CGRectMake(104, 300, 187, 20)];
        resultLabel.text =  str ;
        [self.view addSubview:resultLabel];
       
        UnitLabel = [[UILabel alloc]initWithFrame:CGRectMake(104, 321, 187, 20)];
        UnitLabel.text = @"second";
        [self.view addSubview:UnitLabel];
     
    }
   
}

// tell the picker the width of each row for a given component
(CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component {
    CGFloat componentWidth = 0.0;
        componentWidth = 135.0; // second column is narrower to show numbers
       
        return componentWidth;
}

@end

Step 7: Now Compile and run the application on the Simulator.

You can Download SourceCode from here PickerView_UsingButtonPress

Time Converter Application in iPhone

This is the Time Converter application. Using this application we can can convert time like, Hour to Minute, Hour to Second. So let see how it will worked. My previous topic reference you can find out from here PickerView Programmatically

Step 1: Open the Xcode, Create a new project using View Base application. Give the application “PickerView_usingButtonPress”.

Step 2: Xcode automatically creates the directory structure and adds essential frameworks to it. You can explore the directory structure to check out the content of the directory.

Step 3: We need to add images in the resource folder.

Step 4: Open the PickerView_usingButtonPress.h file and make the following changes:

#import <UIKit/UIKit.h>

@interface PickerView_UsingButtonPressViewController : UIViewController {

NSMutableArray *array_from;
NSMutableArray *array_to;
UIPickerView *fromPickerView;
UIPickerView *toPickerView;
UIButton *doneButton ;
UITextField *fromButton;
UIButton *button1;

UIImageView *m_objBackgroundView;

UITextField *toTextButton;
UIButton *toButton;

IBOutlet UILabel*resultLabel;
IBOutlet UITextField *valueData;
IBOutlet UILabel*UnitLabel;

}
@property(nonatomic,retain) IBOutlet UITextField *fromButton;
@property(nonatomic,retain) IBOutlet   UIButton *button1;
@property(nonatomic,retain) IBOutlet UITextField *toTextButton;
@property(nonatomic,retain) IBOutlet   UIButton *toButton;

(IBAction)FromButton:(id)sender;
(IBAction)ToButton:(id)sender;
(IBAction)Calculation:(id)sender;

@end

Step 5: Double click the PickerView_usingButtonPress.xib file and open it to the Interface Builder. First drag the three label from the library and place it to the view window. Give the label name Value:, From: and To: . And drag the three  TextField from the library and place it to the view window. Connect Files Owner icon to the textfield and select valueData, fromButton and toTextButton. Now drag the Round Rect Button from the library and place it to the view window. Select the Round Rect Button and bring up Connection Inspector and connect Touch Up inside to the File’s Owner icon and select Calculation: method. Now save the .xib file, close it and go back to the Xcode.

Step 6: In the PickerView_usingButtonPress.m file and make the following changes:

#import "PickerView_UsingButtonPressViewController.h"

#define kPICKERCOLUMN 1
#define kFROMPICKERTAG 20
#define kTOPICKERTAG 21

@implementation PickerView_UsingButtonPressViewController

@synthesize fromButton,button1,toTextButton,toButton;

(IBAction)ToButton:(id)sender
{
 
    toPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 200, 320, 200)];
    toPickerView.tag = kTOPICKERTAG;
   
    [self.view addSubview:toPickerView];
    toPickerView.delegate = self;
    toPickerView.showsSelectionIndicator = YES;
   
    doneButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [doneButton addTarget:self
                   action:@selector(ToPickerViewRemove:)
         forControlEvents:UIControlEventTouchDown];
    doneButton.frame = CGRectMake(265.0,202.0,  52.0, 30.0);
    UIImage *img = [UIImage imageNamed:@"done.png"];
    [doneButton setImage:img forState:UIControlStateNormal];
   
    [img release];
   
    [self.view addSubview:doneButton];
   
     
}

(IBAction)FromButton:(id)sender
{
    fromPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 200, 320, 200)];
    fromPickerView.tag = kFROMPICKERTAG;
    [self.view addSubview:fromPickerView];
    fromPickerView.delegate = self;
    fromPickerView.showsSelectionIndicator = YES;
   
    doneButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [doneButton addTarget:self
                   action:@selector(FromPickerViewRemove:)
         forControlEvents:UIControlEventTouchDown];
    doneButton.frame = CGRectMake(265.0,202.0,  52.0, 30.0);
    UIImage *img = [UIImage imageNamed:@"done.png"];
    [doneButton setImage:img forState:UIControlStateNormal];
   
    [img release];
   
    [self.view addSubview:doneButton];
 
}

(IBAction)ToPickerViewRemove:(id)sender
{
    [toPickerView removeFromSuperview];
    [doneButton removeFromSuperview];
    [m_objBackgroundView removeFromSuperview];
}

(IBAction)FromPickerViewRemove:(id)sender
{
    [fromPickerView removeFromSuperview];
    [doneButton removeFromSuperview];
    [m_objBackgroundView removeFromSuperview];
}

(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

(void)dealloc
{
    [super dealloc];
}

(void)didReceiveMemoryWarning
{
    // Releases the view if it doesn’t have a superview.
    [super didReceiveMemoryWarning];
   
    // Release any cached data, images, etc that aren’t in use.
}

#pragma mark – View lifecycle

(void)viewDidLoad
{
    [super viewDidLoad];
   
    array_from=[[NSMutableArray alloc]initWithObjects:@"Hour",nil];
   array_to=[[NSMutableArray alloc]initWithObjects:@"Hour",@"Minute",@"Second",nil];

    [super viewDidLoad];
   
 
}

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

(void)viewDidUnload
{
    [super viewDidUnload];
   
}

(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
   
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
   
    if (pickerView.tag == kFROMPICKERTAG)
        return [array_from count];
    else
        return [array_to count];
}

(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
    return kPICKERCOLUMN;
}

(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
   
   
    if (pickerView.tag == kFROMPICKERTAG){
             
        [fromButton setText:[NSString stringWithFormat:@"%@",[array_from objectAtIndex:[pickerView selectedRowInComponent:0]]]];
       
       
    }
    else{
       
         [toTextButton setText:[NSString stringWithFormat:@"%@",[array_to objectAtIndex:[pickerView selectedRowInComponent:0]]]];
    }
   
}

(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    if (pickerView.tag == kFROMPICKERTAG){    
               
        return [array_from objectAtIndex:row];
      }
       
    else{
               
        return [array_to objectAtIndex:row];
    }
     
}

(IBAction)Calculation:(id)sender{
   
    NSString *tempString=fromButton.text;
    NSString *tempString1=toTextButton.text;
   
    NSString *string=@"Hour";
    NSString *string1=@"Minute";
    NSString *string2=@"Second";
   
   
    // From Hour To Hour
   
    if([tempString isEqualToString:string] && [tempString1 isEqualToString:string]){
       
        resultLabel = [[UILabel alloc]initWithFrame:CGRectMake(104, 300, 187, 20)];
        resultLabel.text =  valueData.text;
        [self.view addSubview:resultLabel];
        UnitLabel = [[UILabel alloc]initWithFrame:CGRectMake(104, 321, 187, 20)];
        UnitLabel.text = @"hour";
        [self.view addSubview:UnitLabel];
    }
   
    // From Hour To Minute
   
    if([tempString isEqualToString:string] && [tempString1 isEqualToString:string1]){
        int Result;
        NSString *str;
        int x = [valueData.text intValue];
        Result = (60*x);
        str = [NSString stringWithFormat:@"%d", Result];
        resultLabel = [[UILabel alloc]initWithFrame:CGRectMake(104, 300, 187, 20)];
        resultLabel.text =  str;
        [self.view addSubview:resultLabel];
       
        UnitLabel = [[UILabel alloc]initWithFrame:CGRectMake(104, 321, 187, 20)];
        UnitLabel.text = @"minute";
        [self.view addSubview:UnitLabel];
       
    }
   
    //  From Hour To Second
   
    if([tempString isEqualToString:string] && [tempString1 isEqualToString:string2]){
        int Result;
        int x = [valueData.text intValue];
        Result = (60*60*x);
        NSString *str;
        str = [NSString stringWithFormat:@"%d", Result];
        resultLabel = [[UILabel alloc]initWithFrame:CGRectMake(104, 300, 187, 20)];
        resultLabel.text =  str ;
        [self.view addSubview:resultLabel];
       
        UnitLabel = [[UILabel alloc]initWithFrame:CGRectMake(104, 321, 187, 20)];
        UnitLabel.text = @"second";
        [self.view addSubview:UnitLabel];
     
    }
   
}

// tell the picker the width of each row for a given component
(CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component {
    CGFloat componentWidth = 0.0;
        componentWidth = 135.0; // second column is narrower to show numbers
       
        return componentWidth;
}

@end

Step 7: Now Compile and run the application on the Simulator.

You can Download SourceCode from here PickerView_UsingButtonPress

Time Converter Application in iPhone

This is the Time Converter application. Using this application we can can convert time like, Hour to Minute, Hour to Second. So let see how it will worked. My previous topic reference you can find out from here PickerView Programmatically

Step 1: Open the Xcode, Create a new project using View Base application. Give the application “PickerView_usingButtonPress”.

Step 2: Xcode automatically creates the directory structure and adds essential frameworks to it. You can explore the directory structure to check out the content of the directory.

Step 3: We need to add images in the resource folder.

Step 4: Open the PickerView_usingButtonPress.h file and make the following changes:

#import <UIKit/UIKit.h>

@interface PickerView_UsingButtonPressViewController : UIViewController {

NSMutableArray *array_from;
NSMutableArray *array_to;
UIPickerView *fromPickerView;
UIPickerView *toPickerView;
UIButton *doneButton ;
UITextField *fromButton;
UIButton *button1;

UIImageView *m_objBackgroundView;

UITextField *toTextButton;
UIButton *toButton;

IBOutlet UILabel*resultLabel;
IBOutlet UITextField *valueData;
IBOutlet UILabel*UnitLabel;

}
@property(nonatomic,retain) IBOutlet UITextField *fromButton;
@property(nonatomic,retain) IBOutlet   UIButton *button1;
@property(nonatomic,retain) IBOutlet UITextField *toTextButton;
@property(nonatomic,retain) IBOutlet   UIButton *toButton;

(IBAction)FromButton:(id)sender;
(IBAction)ToButton:(id)sender;
(IBAction)Calculation:(id)sender;

@end

Step 5: Double click the PickerView_usingButtonPress.xib file and open it to the Interface Builder. First drag the three label from the library and place it to the view window. Give the label name Value:, From: and To: . And drag the three  TextField from the library and place it to the view window. Connect Files Owner icon to the textfield and select valueData, fromButton and toTextButton. Now drag the Round Rect Button from the library and place it to the view window. Select the Round Rect Button and bring up Connection Inspector and connect Touch Up inside to the File’s Owner icon and select Calculation: method. Now save the .xib file, close it and go back to the Xcode.

Step 6: In the PickerView_usingButtonPress.m file and make the following changes:

#import "PickerView_UsingButtonPressViewController.h"

#define kPICKERCOLUMN 1
#define kFROMPICKERTAG 20
#define kTOPICKERTAG 21

@implementation PickerView_UsingButtonPressViewController

@synthesize fromButton,button1,toTextButton,toButton;

(IBAction)ToButton:(id)sender
{
 
    toPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 200, 320, 200)];
    toPickerView.tag = kTOPICKERTAG;
   
    [self.view addSubview:toPickerView];
    toPickerView.delegate = self;
    toPickerView.showsSelectionIndicator = YES;
   
    doneButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [doneButton addTarget:self
                   action:@selector(ToPickerViewRemove:)
         forControlEvents:UIControlEventTouchDown];
    doneButton.frame = CGRectMake(265.0,202.0,  52.0, 30.0);
    UIImage *img = [UIImage imageNamed:@"done.png"];
    [doneButton setImage:img forState:UIControlStateNormal];
   
    [img release];
   
    [self.view addSubview:doneButton];
   
     
}

(IBAction)FromButton:(id)sender
{
    fromPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 200, 320, 200)];
    fromPickerView.tag = kFROMPICKERTAG;
    [self.view addSubview:fromPickerView];
    fromPickerView.delegate = self;
    fromPickerView.showsSelectionIndicator = YES;
   
    doneButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [doneButton addTarget:self
                   action:@selector(FromPickerViewRemove:)
         forControlEvents:UIControlEventTouchDown];
    doneButton.frame = CGRectMake(265.0,202.0,  52.0, 30.0);
    UIImage *img = [UIImage imageNamed:@"done.png"];
    [doneButton setImage:img forState:UIControlStateNormal];
   
    [img release];
   
    [self.view addSubview:doneButton];
 
}

(IBAction)ToPickerViewRemove:(id)sender
{
    [toPickerView removeFromSuperview];
    [doneButton removeFromSuperview];
    [m_objBackgroundView removeFromSuperview];
}

(IBAction)FromPickerViewRemove:(id)sender
{
    [fromPickerView removeFromSuperview];
    [doneButton removeFromSuperview];
    [m_objBackgroundView removeFromSuperview];
}

(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

(void)dealloc
{
    [super dealloc];
}

(void)didReceiveMemoryWarning
{
    // Releases the view if it doesn’t have a superview.
    [super didReceiveMemoryWarning];
   
    // Release any cached data, images, etc that aren’t in use.
}

#pragma mark – View lifecycle

(void)viewDidLoad
{
    [super viewDidLoad];
   
    array_from=[[NSMutableArray alloc]initWithObjects:@"Hour",nil];
   array_to=[[NSMutableArray alloc]initWithObjects:@"Hour",@"Minute",@"Second",nil];

    [super viewDidLoad];
   
 
}

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

(void)viewDidUnload
{
    [super viewDidUnload];
   
}

(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
   
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
   
    if (pickerView.tag == kFROMPICKERTAG)
        return [array_from count];
    else
        return [array_to count];
}

(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
    return kPICKERCOLUMN;
}

(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
   
   
    if (pickerView.tag == kFROMPICKERTAG){
             
        [fromButton setText:[NSString stringWithFormat:@"%@",[array_from objectAtIndex:[pickerView selectedRowInComponent:0]]]];
       
       
    }
    else{
       
         [toTextButton setText:[NSString stringWithFormat:@"%@",[array_to objectAtIndex:[pickerView selectedRowInComponent:0]]]];
    }
   
}

(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    if (pickerView.tag == kFROMPICKERTAG){    
               
        return [array_from objectAtIndex:row];
      }
       
    else{
               
        return [array_to objectAtIndex:row];
    }
     
}

(IBAction)Calculation:(id)sender{
   
    NSString *tempString=fromButton.text;
    NSString *tempString1=toTextButton.text;
   
    NSString *string=@"Hour";
    NSString *string1=@"Minute";
    NSString *string2=@"Second";
   
   
    // From Hour To Hour
   
    if([tempString isEqualToString:string] && [tempString1 isEqualToString:string]){
       
        resultLabel = [[UILabel alloc]initWithFrame:CGRectMake(104, 300, 187, 20)];
        resultLabel.text =  valueData.text;
        [self.view addSubview:resultLabel];
        UnitLabel = [[UILabel alloc]initWithFrame:CGRectMake(104, 321, 187, 20)];
        UnitLabel.text = @"hour";
        [self.view addSubview:UnitLabel];
    }
   
    // From Hour To Minute
   
    if([tempString isEqualToString:string] && [tempString1 isEqualToString:string1]){
        int Result;
        NSString *str;
        int x = [valueData.text intValue];
        Result = (60*x);
        str = [NSString stringWithFormat:@"%d", Result];
        resultLabel = [[UILabel alloc]initWithFrame:CGRectMake(104, 300, 187, 20)];
        resultLabel.text =  str;
        [self.view addSubview:resultLabel];
       
        UnitLabel = [[UILabel alloc]initWithFrame:CGRectMake(104, 321, 187, 20)];
        UnitLabel.text = @"minute";
        [self.view addSubview:UnitLabel];
       
    }
   
    //  From Hour To Second
   
    if([tempString isEqualToString:string] && [tempString1 isEqualToString:string2]){
        int Result;
        int x = [valueData.text intValue];
        Result = (60*60*x);
        NSString *str;
        str = [NSString stringWithFormat:@"%d", Result];
        resultLabel = [[UILabel alloc]initWithFrame:CGRectMake(104, 300, 187, 20)];
        resultLabel.text =  str ;
        [self.view addSubview:resultLabel];
       
        UnitLabel = [[UILabel alloc]initWithFrame:CGRectMake(104, 321, 187, 20)];
        UnitLabel.text = @"second";
        [self.view addSubview:UnitLabel];
     
    }
   
}

// tell the picker the width of each row for a given component
(CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component {
    CGFloat componentWidth = 0.0;
        componentWidth = 135.0; // second column is narrower to show numbers
       
        return componentWidth;
}

@end

Step 7: Now Compile and run the application on the Simulator.

You can Download SourceCode from here PickerView_UsingButtonPress

Time Converter Application in iPhone

This is the Time Converter application. Using this application we can can convert time like, Hour to Minute, Hour to Second. So let see how it will worked. My previous topic reference you can find out from here PickerView Programmatically

Step 1: Open the Xcode, Create a new project using View Base application. Give the application “PickerView_usingButtonPress”.

Step 2: Xcode automatically creates the directory structure and adds essential frameworks to it. You can explore the directory structure to check out the content of the directory.

Step 3: We need to add images in the resource folder.

Step 4: Open the PickerView_usingButtonPress.h file and make the following changes:

#import <UIKit/UIKit.h>

@interface PickerView_UsingButtonPressViewController : UIViewController {

NSMutableArray *array_from;
NSMutableArray *array_to;
UIPickerView *fromPickerView;
UIPickerView *toPickerView;
UIButton *doneButton ;
UITextField *fromButton;
UIButton *button1;

UIImageView *m_objBackgroundView;

UITextField *toTextButton;
UIButton *toButton;

IBOutlet UILabel*resultLabel;
IBOutlet UITextField *valueData;
IBOutlet UILabel*UnitLabel;

}
@property(nonatomic,retain) IBOutlet UITextField *fromButton;
@property(nonatomic,retain) IBOutlet   UIButton *button1;
@property(nonatomic,retain) IBOutlet UITextField *toTextButton;
@property(nonatomic,retain) IBOutlet   UIButton *toButton;

(IBAction)FromButton:(id)sender;
(IBAction)ToButton:(id)sender;
(IBAction)Calculation:(id)sender;

@end

Step 5: Double click the PickerView_usingButtonPress.xib file and open it to the Interface Builder. First drag the three label from the library and place it to the view window. Give the label name Value:, From: and To: . And drag the three  TextField from the library and place it to the view window. Connect Files Owner icon to the textfield and select valueData, fromButton and toTextButton. Now drag the Round Rect Button from the library and place it to the view window. Select the Round Rect Button and bring up Connection Inspector and connect Touch Up inside to the File’s Owner icon and select Calculation: method. Now save the .xib file, close it and go back to the Xcode.

Step 6: In the PickerView_usingButtonPress.m file and make the following changes:

#import "PickerView_UsingButtonPressViewController.h"

#define kPICKERCOLUMN 1
#define kFROMPICKERTAG 20
#define kTOPICKERTAG 21

@implementation PickerView_UsingButtonPressViewController

@synthesize fromButton,button1,toTextButton,toButton;

(IBAction)ToButton:(id)sender
{
 
    toPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 200, 320, 200)];
    toPickerView.tag = kTOPICKERTAG;
   
    [self.view addSubview:toPickerView];
    toPickerView.delegate = self;
    toPickerView.showsSelectionIndicator = YES;
   
    doneButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [doneButton addTarget:self
                   action:@selector(ToPickerViewRemove:)
         forControlEvents:UIControlEventTouchDown];
    doneButton.frame = CGRectMake(265.0,202.0,  52.0, 30.0);
    UIImage *img = [UIImage imageNamed:@"done.png"];
    [doneButton setImage:img forState:UIControlStateNormal];
   
    [img release];
   
    [self.view addSubview:doneButton];
   
     
}

(IBAction)FromButton:(id)sender
{
    fromPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 200, 320, 200)];
    fromPickerView.tag = kFROMPICKERTAG;
    [self.view addSubview:fromPickerView];
    fromPickerView.delegate = self;
    fromPickerView.showsSelectionIndicator = YES;
   
    doneButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [doneButton addTarget:self
                   action:@selector(FromPickerViewRemove:)
         forControlEvents:UIControlEventTouchDown];
    doneButton.frame = CGRectMake(265.0,202.0,  52.0, 30.0);
    UIImage *img = [UIImage imageNamed:@"done.png"];
    [doneButton setImage:img forState:UIControlStateNormal];
   
    [img release];
   
    [self.view addSubview:doneButton];
 
}

(IBAction)ToPickerViewRemove:(id)sender
{
    [toPickerView removeFromSuperview];
    [doneButton removeFromSuperview];
    [m_objBackgroundView removeFromSuperview];
}

(IBAction)FromPickerViewRemove:(id)sender
{
    [fromPickerView removeFromSuperview];
    [doneButton removeFromSuperview];
    [m_objBackgroundView removeFromSuperview];
}

(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

(void)dealloc
{
    [super dealloc];
}

(void)didReceiveMemoryWarning
{
    // Releases the view if it doesn’t have a superview.
    [super didReceiveMemoryWarning];
   
    // Release any cached data, images, etc that aren’t in use.
}

#pragma mark – View lifecycle

(void)viewDidLoad
{
    [super viewDidLoad];
   
    array_from=[[NSMutableArray alloc]initWithObjects:@"Hour",nil];
   array_to=[[NSMutableArray alloc]initWithObjects:@"Hour",@"Minute",@"Second",nil];

    [super viewDidLoad];
   
 
}

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

(void)viewDidUnload
{
    [super viewDidUnload];
   
}

(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
   
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
   
    if (pickerView.tag == kFROMPICKERTAG)
        return [array_from count];
    else
        return [array_to count];
}

(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
    return kPICKERCOLUMN;
}

(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
   
   
    if (pickerView.tag == kFROMPICKERTAG){
             
        [fromButton setText:[NSString stringWithFormat:@"%@",[array_from objectAtIndex:[pickerView selectedRowInComponent:0]]]];
       
       
    }
    else{
       
         [toTextButton setText:[NSString stringWithFormat:@"%@",[array_to objectAtIndex:[pickerView selectedRowInComponent:0]]]];
    }
   
}

(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    if (pickerView.tag == kFROMPICKERTAG){    
               
        return [array_from objectAtIndex:row];
      }
       
    else{
               
        return [array_to objectAtIndex:row];
    }
     
}

(IBAction)Calculation:(id)sender{
   
    NSString *tempString=fromButton.text;
    NSString *tempString1=toTextButton.text;
   
    NSString *string=@"Hour";
    NSString *string1=@"Minute";
    NSString *string2=@"Second";
   
   
    // From Hour To Hour
   
    if([tempString isEqualToString:string] && [tempString1 isEqualToString:string]){
       
        resultLabel = [[UILabel alloc]initWithFrame:CGRectMake(104, 300, 187, 20)];
        resultLabel.text =  valueData.text;
        [self.view addSubview:resultLabel];
        UnitLabel = [[UILabel alloc]initWithFrame:CGRectMake(104, 321, 187, 20)];
        UnitLabel.text = @"hour";
        [self.view addSubview:UnitLabel];
    }
   
    // From Hour To Minute
   
    if([tempString isEqualToString:string] && [tempString1 isEqualToString:string1]){
        int Result;
        NSString *str;
        int x = [valueData.text intValue];
        Result = (60*x);
        str = [NSString stringWithFormat:@"%d", Result];
        resultLabel = [[UILabel alloc]initWithFrame:CGRectMake(104, 300, 187, 20)];
        resultLabel.text =  str;
        [self.view addSubview:resultLabel];
       
        UnitLabel = [[UILabel alloc]initWithFrame:CGRectMake(104, 321, 187, 20)];
        UnitLabel.text = @"minute";
        [self.view addSubview:UnitLabel];
       
    }
   
    //  From Hour To Second
   
    if([tempString isEqualToString:string] && [tempString1 isEqualToString:string2]){
        int Result;
        int x = [valueData.text intValue];
        Result = (60*60*x);
        NSString *str;
        str = [NSString stringWithFormat:@"%d", Result];
        resultLabel = [[UILabel alloc]initWithFrame:CGRectMake(104, 300, 187, 20)];
        resultLabel.text =  str ;
        [self.view addSubview:resultLabel];
       
        UnitLabel = [[UILabel alloc]initWithFrame:CGRectMake(104, 321, 187, 20)];
        UnitLabel.text = @"second";
        [self.view addSubview:UnitLabel];
     
    }
   
}

// tell the picker the width of each row for a given component
(CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component {
    CGFloat componentWidth = 0.0;
        componentWidth = 135.0; // second column is narrower to show numbers
       
        return componentWidth;
}

@end

Step 7: Now Compile and run the application on the Simulator.

You can Download SourceCode from here PickerView_UsingButtonPress

Using OS X with an SSD plus HDD setup

Solid-state drives (SSDs) are becoming commonplace, and the first time you use one as a boot drive, you realise why – they’re faster than hard drives to a ridiculous degree. The downside is they’re currently still very expensive compared to hard drives, such that only smaller capacities are currently affordable. Macs are now being offered with what I call “mixed drive” configurations, including both a (small; often 256 GB) SSD and an HDD, and many people wonder how to make the most of this setup.

I have two SSD-equipped machines here, including a mixed-drive iMac, and have recently configured it in what I believe is a good compromise setup to take advantage of SSD speed without sacrificing the roomy storage of a hard drive (or causing excessive wear to the SSD). This is just one possible setup, but I hope it’s useful to you.

The basic approach here is to have the OS on the SSD (the default setup on mixed-drive Macs), and to move certain folders onto the hard drive, providing links to those folders in the places they used to be. Before beginning, let me try to pre-empt two possible comments:

“You can tell iTunes (etc) to keep its data elsewhere!”

Indeed you can (usually by holding the alt/option key whilst launching the app), but you’ll have to do it for each and every app that has such a capability – and some apps won’t let you. The method I’m about to describe, however, will just work, without changing any settings.

“You can put the home folder on the hard drive, and use the Accounts pane to point to it!”

That’s also true (unlock the Accounts pane, then right-click on your account in the list), but you’re losing the speed benefit of having certain parts of your home folder on the SSD (such as caches, preferences, your development projects and so forth).

It’s your choice if you want to use one of the above limited expedients, but I feel that you can find a better balance by doing just a little bit of extra work.

Copying and Linking folders on the HDD

With that all said, let’s offload some folders to the hard drive. It’s extremely easy to do, even though there’s a tiny, tiny bit of typing on the Terminal involved. If you’re scared of that, by all means run away now and get a friend to help. Also, make sure you have an up-to-date backup of your boot drive before beginning; that’s just common sense.

We’re really just going to be repeating the same process over and over, once for each folder that you want to live on the HDD instead of the SDD. The process is simply this:

  1. In the Finder, copy the folder from the SSD to the HDD. Check that it was copied successfully.
  2. In Terminal, cd to the location of the original folder (on the SSD), and delete it via sudo rm -rf foldername.
  3. In Terminal, still in the location of the original folder you just deleted, make a link to the copy of the folder on the HDD, via ln -s /Volumes/HDDname/path/to/foldername.

(In steps 2 and 3 above, you should of course substitute the actual names and paths of the relevant folders and volume instead of ‘foldername’, ‘HDDname’, and ‘path/to/foldername’. Hopefully that’s obvious. For the ln command, think of the syntax as being “put a link here, that points to there“.)

That’s it. You’ll probably want to put all these copied folders somewhere sensible on the HDD; I created a folder called “matt” at the root of the HDD, and copied my folders into there – you can see a picture of it below. I’ve heard that you should not create a “Users” folder at the root of a non-boot disk, however.

List of folders moved onto a hard drive, and linked from the solid state drive

You should also note that, if you’ve copied and linked one of the “special” folders in your home directory (such as Pictures), the new folder/link won’t have the special icon that the Finder usually provides. That’s normal, and completely harmless. You may also need to re-add the folder to the Finder’s sidebar.

There’s nothing else to it, except to decide which folders to actually offload.

Choosing which folders to put on the HDD

This is a personal decision, but generally you’ll want to offload folders that fit any of these criteria:

  1. Are very large. Your SSD is small, and it shouldn’t be bursting at the seams.
  2. Will change extremely often, particularly if they contain large files. SSDs are notably subject to wear, especially if they don’t support TRIM.
  3. Contain files which aren’t involved in performance-critical work.

Try to keep in mind that the HDD is perfectly good enough for almost everything, and that we’ve been using HDDs for years. It’s not the poor cousin, and it hasn’t suddenly acquired the performance characteristics of a floppy disk drive. This is just about balance, and sensible optimisations to help get the most from the new SSD.

In my own case, I offloaded several of the folders in my home directory onto the HDD, as shown in the screenshot below.

List of folders in home folder on solid state drive, showing the following ones as links to the hard drive: Backups, Downloads, Dropbox, Movies and Pictures.

Note that the Dropbox folder is created by the utility of the same name, and that the Backups folder is one I created for my own use.

In addition to those, as shown in the picture, I offloaded Downloads, Movies and Pictures. I don’t keep things permanently in my Downloads folder yet its contents change constantly, so it was an excellent candidate for offloading. I also don’t heavily use iPhoto or Aperture, and keep my graphic work files in my Documents folder, so I could offload Pictures. I don’t do any video editing, and have a large Movies folder, so I offloaded it too.

I did not offload the Music folder, but I did offload the actual media files (and mobile apps) that iTunes uses, as shown in the picture of my Music folder’s contents below.

Contents of the Music folder, showing that the 'iTunes Music' folder (sometimes also called 'iTunes Media') within the iTunes folder is a link to a folder on the hard drive

Note that on your Mac, the “iTunes Music” folder may instead be called “iTunes Media”. The reason I didn’t offload the entire Music folder was to keep my GarageBand files on the SSD for performance, and nor did I offload the entire parent iTunes folder so that I could keep iTunes’ library and metadata files on the SSD for the same reason.

You may find that you’ll want to keep some of those folders on the SSD, and equally you may find that you want to offload additional folders to the HDD. For example, I also put my Virtual Machines folder on the HDD, and you might also want to put your Steam games there (they live in ~/Library/Application Support/Steam).

Just follow the same process as above, and you should be fine. It takes only a few minutes, and it should ensure that you get the maximum benefit from the SSD without being unduly hindered by its comparatively small capacity.

If you enjoyed this article, you may want to follow me (@mattgemmell) on Twitter, where I always announce new articles and projects. You may also want to read my biography, or hire me for your iPad, iPhone or Mac OS X app projects.

Using OS X with an SSD plus HDD setup

Solid-state drives (SSDs) are becoming commonplace, and the first time you use one as a boot drive, you realise why – they’re faster than hard drives to a ridiculous degree. The downside is they’re currently still very expensive compared to hard drives, such that only smaller capacities are currently affordable. Macs are now being offered with what I call “mixed drive” configurations, including both a (small; often 256 GB) SSD and an HDD, and many people wonder how to make the most of this setup.

I have two SSD-equipped machines here, including a mixed-drive iMac, and have recently configured it in what I believe is a good compromise setup to take advantage of SSD speed without sacrificing the roomy storage of a hard drive (or causing excessive wear to the SSD). This is just one possible setup, but I hope it’s useful to you.

The basic approach here is to have the OS on the SSD (the default setup on mixed-drive Macs), and to move certain folders onto the hard drive, providing links to those folders in the places they used to be. Before beginning, let me try to pre-empt two possible comments:

“You can tell iTunes (etc) to keep its data elsewhere!”

Indeed you can (usually by holding the alt/option key whilst launching the app), but you’ll have to do it for each and every app that has such a capability – and some apps won’t let you. The method I’m about to describe, however, will just work, without changing any settings.

“You can put the home folder on the hard drive, and use the Accounts pane to point to it!”

That’s also true (unlock the Accounts pane, then right-click on your account in the list), but you’re losing the speed benefit of having certain parts of your home folder on the SSD (such as caches, preferences, your development projects and so forth).

It’s your choice if you want to use one of the above limited expedients, but I feel that you can find a better balance by doing just a little bit of extra work.

Copying and Linking folders on the HDD

With that all said, let’s offload some folders to the hard drive. It’s extremely easy to do, even though there’s a tiny, tiny bit of typing on the Terminal involved. If you’re scared of that, by all means run away now and get a friend to help. Also, make sure you have an up-to-date backup of your boot drive before beginning; that’s just common sense.

We’re really just going to be repeating the same process over and over, once for each folder that you want to live on the HDD instead of the SDD. The process is simply this:

  1. In the Finder, copy the folder from the SSD to the HDD. Check that it was copied successfully.
  2. In Terminal, cd to the location of the original folder (on the SSD), and delete it via sudo rm -rf foldername.
  3. In Terminal, still in the location of the original folder you just deleted, make a link to the copy of the folder on the HDD, via ln -s /Volumes/HDDname/path/to/foldername.

(In steps 2 and 3 above, you should of course substitute the actual names and paths of the relevant folders and volume instead of ‘foldername’, ‘HDDname’, and ‘path/to/foldername’. Hopefully that’s obvious. For the ln command, think of the syntax as being “put a link here, that points to there“.)

That’s it. You’ll probably want to put all these copied folders somewhere sensible on the HDD; I created a folder called “matt” at the root of the HDD, and copied my folders into there – you can see a picture of it below. I’ve heard that you should not create a “Users” folder at the root of a non-boot disk, however.

List of folders moved onto a hard drive, and linked from the solid state drive

You should also note that, if you’ve copied and linked one of the “special” folders in your home directory (such as Pictures), the new folder/link won’t have the special icon that the Finder usually provides. That’s normal, and completely harmless. You may also need to re-add the folder to the Finder’s sidebar.

There’s nothing else to it, except to decide which folders to actually offload.

Choosing which folders to put on the HDD

This is a personal decision, but generally you’ll want to offload folders that fit any of these criteria:

  1. Are very large. Your SSD is small, and it shouldn’t be bursting at the seams.
  2. Will change extremely often, particularly if they contain large files. SSDs are notably subject to wear, especially if they don’t support TRIM.
  3. Contain files which aren’t involved in performance-critical work.

Try to keep in mind that the HDD is perfectly good enough for almost everything, and that we’ve been using HDDs for years. It’s not the poor cousin, and it hasn’t suddenly acquired the performance characteristics of a floppy disk drive. This is just about balance, and sensible optimisations to help get the most from the new SSD.

In my own case, I offloaded several of the folders in my home directory onto the HDD, as shown in the screenshot below.

List of folders in home folder on solid state drive, showing the following ones as links to the hard drive: Backups, Downloads, Dropbox, Movies and Pictures.

Note that the Dropbox folder is created by the utility of the same name, and that the Backups folder is one I created for my own use.

In addition to those, as shown in the picture, I offloaded Downloads, Movies and Pictures. I don’t keep things permanently in my Downloads folder yet its contents change constantly, so it was an excellent candidate for offloading. I also don’t heavily use iPhoto or Aperture, and keep my graphic work files in my Documents folder, so I could offload Pictures. I don’t do any video editing, and have a large Movies folder, so I offloaded it too.

I did not offload the Music folder, but I did offload the actual media files (and mobile apps) that iTunes uses, as shown in the picture of my Music folder’s contents below.

Contents of the Music folder, showing that the 'iTunes Music' folder (sometimes also called 'iTunes Media') within the iTunes folder is a link to a folder on the hard drive

Note that on your Mac, the “iTunes Music” folder may instead be called “iTunes Media”. The reason I didn’t offload the entire Music folder was to keep my GarageBand files on the SSD for performance, and nor did I offload the entire parent iTunes folder so that I could keep iTunes’ library and metadata files on the SSD for the same reason.

You may find that you’ll want to keep some of those folders on the SSD, and equally you may find that you want to offload additional folders to the HDD. For example, I also put my Virtual Machines folder on the HDD, and you might also want to put your Steam games there (they live in ~/Library/Application Support/Steam).

Just follow the same process as above, and you should be fine. It takes only a few minutes, and it should ensure that you get the maximum benefit from the SSD without being unduly hindered by its comparatively small capacity.

If you enjoyed this article, you may want to follow me (@mattgemmell) on Twitter, where I always announce new articles and projects. You may also want to read my biography, or hire me for your iPad, iPhone or Mac OS X app projects.

Using OS X with an SSD plus HDD setup

Solid-state drives (SSDs) are becoming commonplace, and the first time you use one as a boot drive, you realise why – they’re faster than hard drives to a ridiculous degree. The downside is they’re currently still very expensive compared to hard drives, such that only smaller capacities are currently affordable. Macs are now being offered with what I call “mixed drive” configurations, including both a (small; often 256 GB) SSD and an HDD, and many people wonder how to make the most of this setup.

I have two SSD-equipped machines here, including a mixed-drive iMac, and have recently configured it in what I believe is a good compromise setup to take advantage of SSD speed without sacrificing the roomy storage of a hard drive (or causing excessive wear to the SSD). This is just one possible setup, but I hope it’s useful to you.

The basic approach here is to have the OS on the SSD (the default setup on mixed-drive Macs), and to move certain folders onto the hard drive, providing links to those folders in the places they used to be. Before beginning, let me try to pre-empt two possible comments:

“You can tell iTunes (etc) to keep its data elsewhere!”

Indeed you can (usually by holding the alt/option key whilst launching the app), but you’ll have to do it for each and every app that has such a capability – and some apps won’t let you. The method I’m about to describe, however, will just work, without changing any settings.

“You can put the home folder on the hard drive, and use the Accounts pane to point to it!”

That’s also true (unlock the Accounts pane, then right-click on your account in the list), but you’re losing the speed benefit of having certain parts of your home folder on the SSD (such as caches, preferences, your development projects and so forth).

It’s your choice if you want to use one of the above limited expedients, but I feel that you can find a better balance by doing just a little bit of extra work.

Copying and Linking folders on the HDD

With that all said, let’s offload some folders to the hard drive. It’s extremely easy to do, even though there’s a tiny, tiny bit of typing on the Terminal involved. If you’re scared of that, by all means run away now and get a friend to help. Also, make sure you have an up-to-date backup of your boot drive before beginning; that’s just common sense.

We’re really just going to be repeating the same process over and over, once for each folder that you want to live on the HDD instead of the SDD. The process is simply this:

  1. In the Finder, copy the folder from the SSD to the HDD. Check that it was copied successfully.
  2. In Terminal, cd to the location of the original folder (on the SSD), and delete it via sudo rm -rf foldername.
  3. In Terminal, still in the location of the original folder you just deleted, make a link to the copy of the folder on the HDD, via ln -s /Volumes/HDDname/path/to/foldername.

(In steps 2 and 3 above, you should of course substitute the actual names and paths of the relevant folders and volume instead of ‘foldername’, ‘HDDname’, and ‘path/to/foldername’. Hopefully that’s obvious. For the ln command, think of the syntax as being “put a link here, that points to there“.)

That’s it. You’ll probably want to put all these copied folders somewhere sensible on the HDD; I created a folder called “matt” at the root of the HDD, and copied my folders into there – you can see a picture of it below. I’ve heard that you should not create a “Users” folder at the root of a non-boot disk, however.

List of folders moved onto a hard drive, and linked from the solid state drive

You should also note that, if you’ve copied and linked one of the “special” folders in your home directory (such as Pictures), the new folder/link won’t have the special icon that the Finder usually provides. That’s normal, and completely harmless. You may also need to re-add the folder to the Finder’s sidebar.

There’s nothing else to it, except to decide which folders to actually offload.

Choosing which folders to put on the HDD

This is a personal decision, but generally you’ll want to offload folders that fit any of these criteria:

  1. Are very large. Your SSD is small, and it shouldn’t be bursting at the seams.
  2. Will change extremely often, particularly if they contain large files. SSDs are notably subject to wear, especially if they don’t support TRIM.
  3. Contain files which aren’t involved in performance-critical work.

Try to keep in mind that the HDD is perfectly good enough for almost everything, and that we’ve been using HDDs for years. It’s not the poor cousin, and it hasn’t suddenly acquired the performance characteristics of a floppy disk drive. This is just about balance, and sensible optimisations to help get the most from the new SSD.

In my own case, I offloaded several of the folders in my home directory onto the HDD, as shown in the screenshot below.

List of folders in home folder on solid state drive, showing the following ones as links to the hard drive: Backups, Downloads, Dropbox, Movies and Pictures.

Note that the Dropbox folder is created by the utility of the same name, and that the Backups folder is one I created for my own use.

In addition to those, as shown in the picture, I offloaded Downloads, Movies and Pictures. I don’t keep things permanently in my Downloads folder yet its contents change constantly, so it was an excellent candidate for offloading. I also don’t heavily use iPhoto or Aperture, and keep my graphic work files in my Documents folder, so I could offload Pictures. I don’t do any video editing, and have a large Movies folder, so I offloaded it too.

I did not offload the Music folder, but I did offload the actual media files (and mobile apps) that iTunes uses, as shown in the picture of my Music folder’s contents below.

Contents of the Music folder, showing that the 'iTunes Music' folder (sometimes also called 'iTunes Media') within the iTunes folder is a link to a folder on the hard drive

Note that on your Mac, the “iTunes Music” folder may instead be called “iTunes Media”. The reason I didn’t offload the entire Music folder was to keep my GarageBand files on the SSD for performance, and nor did I offload the entire parent iTunes folder so that I could keep iTunes’ library and metadata files on the SSD for the same reason.

You may find that you’ll want to keep some of those folders on the SSD, and equally you may find that you want to offload additional folders to the HDD. For example, I also put my Virtual Machines folder on the HDD, and you might also want to put your Steam games there (they live in ~/Library/Application Support/Steam).

Just follow the same process as above, and you should be fine. It takes only a few minutes, and it should ensure that you get the maximum benefit from the SSD without being unduly hindered by its comparatively small capacity.

If you enjoyed this article, you may want to follow me (@mattgemmell) on Twitter, where I always announce new articles and projects. You may also want to read my biography, or hire me for your iPad, iPhone or Mac OS X app projects.

Using OS X with an SSD plus HDD setup

Solid-state drives (SSDs) are becoming commonplace, and the first time you use one as a boot drive, you realise why – they’re faster than hard drives to a ridiculous degree. The downside is they’re currently still very expensive compared to hard drives, such that only smaller capacities are currently affordable. Macs are now being offered with what I call “mixed drive” configurations, including both a (small; often 256 GB) SSD and an HDD, and many people wonder how to make the most of this setup.

I have two SSD-equipped machines here, including a mixed-drive iMac, and have recently configured it in what I believe is a good compromise setup to take advantage of SSD speed without sacrificing the roomy storage of a hard drive (or causing excessive wear to the SSD). This is just one possible setup, but I hope it’s useful to you.

The basic approach here is to have the OS on the SSD (the default setup on mixed-drive Macs), and to move certain folders onto the hard drive, providing links to those folders in the places they used to be. Before beginning, let me try to pre-empt two possible comments:

“You can tell iTunes (etc) to keep its data elsewhere!”

Indeed you can (usually by holding the alt/option key whilst launching the app), but you’ll have to do it for each and every app that has such a capability – and some apps won’t let you. The method I’m about to describe, however, will just work, without changing any settings.

“You can put the home folder on the hard drive, and use the Accounts pane to point to it!”

That’s also true (unlock the Accounts pane, then right-click on your account in the list), but you’re losing the speed benefit of having certain parts of your home folder on the SSD (such as caches, preferences, your development projects and so forth).

It’s your choice if you want to use one of the above limited expedients, but I feel that you can find a better balance by doing just a little bit of extra work.

Copying and Linking folders on the HDD

With that all said, let’s offload some folders to the hard drive. It’s extremely easy to do, even though there’s a tiny, tiny bit of typing on the Terminal involved. If you’re scared of that, by all means run away now and get a friend to help. Also, make sure you have an up-to-date backup of your boot drive before beginning; that’s just common sense.

We’re really just going to be repeating the same process over and over, once for each folder that you want to live on the HDD instead of the SDD. The process is simply this:

  1. In the Finder, copy the folder from the SSD to the HDD. Check that it was copied successfully.
  2. In Terminal, cd to the location of the original folder (on the SSD), and delete it via sudo rm -rf foldername.
  3. In Terminal, still in the location of the original folder you just deleted, make a link to the copy of the folder on the HDD, via ln -s /Volumes/HDDname/path/to/foldername.

(In steps 2 and 3 above, you should of course substitute the actual names and paths of the relevant folders and volume instead of ‘foldername’, ‘HDDname’, and ‘path/to/foldername’. Hopefully that’s obvious. For the ln command, think of the syntax as being “put a link here, that points to there“.)

That’s it. You’ll probably want to put all these copied folders somewhere sensible on the HDD; I created a folder called “matt” at the root of the HDD, and copied my folders into there – you can see a picture of it below. I’ve heard that you should not create a “Users” folder at the root of a non-boot disk, however.

List of folders moved onto a hard drive, and linked from the solid state drive

You should also note that, if you’ve copied and linked one of the “special” folders in your home directory (such as Pictures), the new folder/link won’t have the special icon that the Finder usually provides. That’s normal, and completely harmless. You may also need to re-add the folder to the Finder’s sidebar.

There’s nothing else to it, except to decide which folders to actually offload.

Choosing which folders to put on the HDD

This is a personal decision, but generally you’ll want to offload folders that fit any of these criteria:

  1. Are very large. Your SSD is small, and it shouldn’t be bursting at the seams.
  2. Will change extremely often, particularly if they contain large files. SSDs are notably subject to wear, especially if they don’t support TRIM.
  3. Contain files which aren’t involved in performance-critical work.

Try to keep in mind that the HDD is perfectly good enough for almost everything, and that we’ve been using HDDs for years. It’s not the poor cousin, and it hasn’t suddenly acquired the performance characteristics of a floppy disk drive. This is just about balance, and sensible optimisations to help get the most from the new SSD.

In my own case, I offloaded several of the folders in my home directory onto the HDD, as shown in the screenshot below.

List of folders in home folder on solid state drive, showing the following ones as links to the hard drive: Backups, Downloads, Dropbox, Movies and Pictures.

Note that the Dropbox folder is created by the utility of the same name, and that the Backups folder is one I created for my own use.

In addition to those, as shown in the picture, I offloaded Downloads, Movies and Pictures. I don’t keep things permanently in my Downloads folder yet its contents change constantly, so it was an excellent candidate for offloading. I also don’t heavily use iPhoto or Aperture, and keep my graphic work files in my Documents folder, so I could offload Pictures. I don’t do any video editing, and have a large Movies folder, so I offloaded it too.

I did not offload the Music folder, but I did offload the actual media files (and mobile apps) that iTunes uses, as shown in the picture of my Music folder’s contents below.

Contents of the Music folder, showing that the 'iTunes Music' folder (sometimes also called 'iTunes Media') within the iTunes folder is a link to a folder on the hard drive

Note that on your Mac, the “iTunes Music” folder may instead be called “iTunes Media”. The reason I didn’t offload the entire Music folder was to keep my GarageBand files on the SSD for performance, and nor did I offload the entire parent iTunes folder so that I could keep iTunes’ library and metadata files on the SSD for the same reason.

You may find that you’ll want to keep some of those folders on the SSD, and equally you may find that you want to offload additional folders to the HDD. For example, I also put my Virtual Machines folder on the HDD, and you might also want to put your Steam games there (they live in ~/Library/Application Support/Steam).

Just follow the same process as above, and you should be fine. It takes only a few minutes, and it should ensure that you get the maximum benefit from the SSD without being unduly hindered by its comparatively small capacity.

If you enjoyed this article, you may want to follow me (@mattgemmell) on Twitter, where I always announce new articles and projects. You may also want to read my biography, or hire me for your iPad, iPhone or Mac OS X app projects.

iPhone Game Friday: New Releases

Welcome back to Game Friday!

This week brought us some truly fantastic games and we’re very eager to show them to you. Everything from blockbuster action to retro platforming lies after the jump, so click through and have a look. You know you want to.

BackStab

BackStab

BackStab

As is always the case with larger-scale adventures on any platform, it’s difficult to do them critical justice in a couple of paragraphs, but it’s room enough to give an overview. In the case of BackStab, Gameloft’s latest outing, the conclusion is clearly that they’re getting very good at making extremely impressive, console-like games that fit in the palm of your hand.

Fighting for revenge as a wronged officer of the Royal Navy, you take control of Henry Blake and make your way through an impressive story spanning across four cities and vast swathes of jungle, beach and volcano environments in a well realized virtual Caribbean. There’s a good blend of combat and platforming, most of which controls impeccably, and you’ll likely be reminded of a historical Uncharted or Tomb Raider as you play. The combat system is worth mentioning because there is a fairly robust combo mechanism that you can use to string together awesome moves. Or, if you’re the quiet type, stealth kills are also satisfying.

While it goes without saying that the visuals are impressive, it’s worth giving a nod to the audio as well, where the voice work really shines (too bad the models don’t move their mouths, though). So long as you’ve got a relatively recent iOS device and love adventure, BackStab is a no-brainer.

Price: $6.99
Developer: Gameloft
Download: App Store

 

Tiny Tower

Tiny Tower

Tiny Tower

Making a strong entry into the “freemium” world, Tiny Tower offers the chance to build a tower and develop the businesses that open up inside.

Earning money lets you build new floors and attract various “bitizens” to open up shop in your tower or live there. There’s a good deal of customizability in terms of the look of your tower’s floors, the order they appear in and the way that the inhabitants appear, so what could have been a dull game of stacking fast-food joints turns out to be a brilliantly polished, engaging and addictive skyscraper simulator. This is Game Dev Story meets SimCity on your iPhone.

There is some solid social integration as well via GameCenter, and within the game you’ll find an amusing virtual social network called “BitBook” wherein you can monitor the social moods of your tower’s inhabitants. From its vibrantly colourful 8-bit graphics to its smooth and straight-forward gameplay, Tiny Tower is pixel perfect and well worth playing.

Price: Free
Developer: NimbleBit
Download: App Store

 

Continuity 2: The Continuation

Continuity 2: The Continuation

Continuity 2: The Continuation

Having won last year’s Best Student Game award, the developers of the first Continuity (which was a web game) decided it was time to up the ante and bring their amazingly clever game concept to the next level. The result is Continuity 2: The Continuation, and fans of the original will be thrilled to hear that it’s everything they could have hoped for — and it’s on their iPhone!

Continuity’s major claim to fame is a unique puzzle mechanic that’s both mind-bending and deceptively simplistic. Each level is made up of several tiles, and your goal in each level is to slide the tiles around so that your character can pick up a key and unlock the door at the end. This becomes increasingly more difficult as the number of tiles and the complexity of their arrangement increases.

There’s a lot to keep you busy in here, including 50 brand new levels, and given the success of their first game, there’s little doubt that we’ll be seeing more level packs and other updates for Continuity 2 in the near future. We can’t wait!

Price: $0.99
Developer: Ragtime Games LLC
Download: App Store

 

1-bit Ninja

1-bit Ninja

1-bit Ninja

In what must be one of the most interesting mash-ups of gameplay styles and visual aesthetics in recent memory, 1-bit Ninja brings together Mario-style platforming, endless running games, 8-bit graphics and a fully 3D perspective system with unlockable perspectives (including the very cool anaglyph mode).

While it sounds like it could be cluttered, the game is the essence of elegant simplicity. The controls are well-thought-out and designed for touch, so you can stop worrying about fiddly controls and focus on overcoming the game’s seriously unforgiving difficulty level. And make no mistake, this game is hard and proud of it. There’s also no going backward (without using a spring) so it sets itself apart from the standard platformer with a sense of linearity.

There are currently four worlds to traverse and a bunch of cute secrets to find if you’re the pixel peeping type. One fun feature is the replay mode, where you can save your best runs and then re-watch them from the main menu. With more levels on the way, 1-bit Ninja is an easy recommendation for fans of challenging and extremely polished platformers that bring something new to an old formula.

Price: $1.99
Developer: kode80 LLC
Download: App Store

 

Monster Soup

Monster Soup

Monster Soup

Last and certainly not least is Monster Soup, a colourful new title from the great Kieffer Bros., who brought us such iOS classics as Aqueduct. Their newest offering is an adorable story about the Soup System and its resident monsters, who are having some trouble with the evil Plubert.

Plubert is threatening to freeze the monsters and your job is to save them by drawing lines to connect like-coloured monsters in each level. The longer the chain, the more points you get and the more power-ups you can call upon. The game is very accessible and its charming presentation means that it’s easy to get hooked. The fact that you can use a two finger upward swipe to speed up gameplay makes it perfect for more hardcore gamers too, who are looking for a faster pace.

As one expects from the Kieffer Bros., the visuals are polished and run smoothly even on older devices, and the attention to detail is very clear. The monsters may be a bit small for those with larger fingers to successfully maneuver around, but it’s not a significant issue since the controls are very responsive and forgiving. Go save some monsters!

Price: $0.99
Developer: Kieffer Bros.
Download: App Store

 

What Have You Been Playing?

If you can peel yourself away from these gems, then toss us a comment and let us know what else you’ve been playing in case we missed any winners!

iPhone Game Friday: New Releases

Welcome back to Game Friday!

This week brought us some truly fantastic games and we’re very eager to show them to you. Everything from blockbuster action to retro platforming lies after the jump, so click through and have a look. You know you want to.

BackStab

BackStab

BackStab

As is always the case with larger-scale adventures on any platform, it’s difficult to do them critical justice in a couple of paragraphs, but it’s room enough to give an overview. In the case of BackStab, Gameloft’s latest outing, the conclusion is clearly that they’re getting very good at making extremely impressive, console-like games that fit in the palm of your hand.

Fighting for revenge as a wronged officer of the Royal Navy, you take control of Henry Blake and make your way through an impressive story spanning across four cities and vast swathes of jungle, beach and volcano environments in a well realized virtual Caribbean. There’s a good blend of combat and platforming, most of which controls impeccably, and you’ll likely be reminded of a historical Uncharted or Tomb Raider as you play. The combat system is worth mentioning because there is a fairly robust combo mechanism that you can use to string together awesome moves. Or, if you’re the quiet type, stealth kills are also satisfying.

While it goes without saying that the visuals are impressive, it’s worth giving a nod to the audio as well, where the voice work really shines (too bad the models don’t move their mouths, though). So long as you’ve got a relatively recent iOS device and love adventure, BackStab is a no-brainer.

Price: $6.99
Developer: Gameloft
Download: App Store

 

Tiny Tower

Tiny Tower

Tiny Tower

Making a strong entry into the “freemium” world, Tiny Tower offers the chance to build a tower and develop the businesses that open up inside.

Earning money lets you build new floors and attract various “bitizens” to open up shop in your tower or live there. There’s a good deal of customizability in terms of the look of your tower’s floors, the order they appear in and the way that the inhabitants appear, so what could have been a dull game of stacking fast-food joints turns out to be a brilliantly polished, engaging and addictive skyscraper simulator. This is Game Dev Story meets SimCity on your iPhone.

There is some solid social integration as well via GameCenter, and within the game you’ll find an amusing virtual social network called “BitBook” wherein you can monitor the social moods of your tower’s inhabitants. From its vibrantly colourful 8-bit graphics to its smooth and straight-forward gameplay, Tiny Tower is pixel perfect and well worth playing.

Price: Free
Developer: NimbleBit
Download: App Store

 

Continuity 2: The Continuation

Continuity 2: The Continuation

Continuity 2: The Continuation

Having won last year’s Best Student Game award, the developers of the first Continuity (which was a web game) decided it was time to up the ante and bring their amazingly clever game concept to the next level. The result is Continuity 2: The Continuation, and fans of the original will be thrilled to hear that it’s everything they could have hoped for — and it’s on their iPhone!

Continuity’s major claim to fame is a unique puzzle mechanic that’s both mind-bending and deceptively simplistic. Each level is made up of several tiles, and your goal in each level is to slide the tiles around so that your character can pick up a key and unlock the door at the end. This becomes increasingly more difficult as the number of tiles and the complexity of their arrangement increases.

There’s a lot to keep you busy in here, including 50 brand new levels, and given the success of their first game, there’s little doubt that we’ll be seeing more level packs and other updates for Continuity 2 in the near future. We can’t wait!

Price: $0.99
Developer: Ragtime Games LLC
Download: App Store

 

1-bit Ninja

1-bit Ninja

1-bit Ninja

In what must be one of the most interesting mash-ups of gameplay styles and visual aesthetics in recent memory, 1-bit Ninja brings together Mario-style platforming, endless running games, 8-bit graphics and a fully 3D perspective system with unlockable perspectives (including the very cool anaglyph mode).

While it sounds like it could be cluttered, the game is the essence of elegant simplicity. The controls are well-thought-out and designed for touch, so you can stop worrying about fiddly controls and focus on overcoming the game’s seriously unforgiving difficulty level. And make no mistake, this game is hard and proud of it. There’s also no going backward (without using a spring) so it sets itself apart from the standard platformer with a sense of linearity.

There are currently four worlds to traverse and a bunch of cute secrets to find if you’re the pixel peeping type. One fun feature is the replay mode, where you can save your best runs and then re-watch them from the main menu. With more levels on the way, 1-bit Ninja is an easy recommendation for fans of challenging and extremely polished platformers that bring something new to an old formula.

Price: $1.99
Developer: kode80 LLC
Download: App Store

 

Monster Soup

Monster Soup

Monster Soup

Last and certainly not least is Monster Soup, a colourful new title from the great Kieffer Bros., who brought us such iOS classics as Aqueduct. Their newest offering is an adorable story about the Soup System and its resident monsters, who are having some trouble with the evil Plubert.

Plubert is threatening to freeze the monsters and your job is to save them by drawing lines to connect like-coloured monsters in each level. The longer the chain, the more points you get and the more power-ups you can call upon. The game is very accessible and its charming presentation means that it’s easy to get hooked. The fact that you can use a two finger upward swipe to speed up gameplay makes it perfect for more hardcore gamers too, who are looking for a faster pace.

As one expects from the Kieffer Bros., the visuals are polished and run smoothly even on older devices, and the attention to detail is very clear. The monsters may be a bit small for those with larger fingers to successfully maneuver around, but it’s not a significant issue since the controls are very responsive and forgiving. Go save some monsters!

Price: $0.99
Developer: Kieffer Bros.
Download: App Store

 

What Have You Been Playing?

If you can peel yourself away from these gems, then toss us a comment and let us know what else you’ve been playing in case we missed any winners!

iPhone Game Friday: New Releases

Welcome back to Game Friday!

This week brought us some truly fantastic games and we’re very eager to show them to you. Everything from blockbuster action to retro platforming lies after the jump, so click through and have a look. You know you want to.

BackStab

BackStab

BackStab

As is always the case with larger-scale adventures on any platform, it’s difficult to do them critical justice in a couple of paragraphs, but it’s room enough to give an overview. In the case of BackStab, Gameloft’s latest outing, the conclusion is clearly that they’re getting very good at making extremely impressive, console-like games that fit in the palm of your hand.

Fighting for revenge as a wronged officer of the Royal Navy, you take control of Henry Blake and make your way through an impressive story spanning across four cities and vast swathes of jungle, beach and volcano environments in a well realized virtual Caribbean. There’s a good blend of combat and platforming, most of which controls impeccably, and you’ll likely be reminded of a historical Uncharted or Tomb Raider as you play. The combat system is worth mentioning because there is a fairly robust combo mechanism that you can use to string together awesome moves. Or, if you’re the quiet type, stealth kills are also satisfying.

While it goes without saying that the visuals are impressive, it’s worth giving a nod to the audio as well, where the voice work really shines (too bad the models don’t move their mouths, though). So long as you’ve got a relatively recent iOS device and love adventure, BackStab is a no-brainer.

Price: $6.99
Developer: Gameloft
Download: App Store

 

Tiny Tower

Tiny Tower

Tiny Tower

Making a strong entry into the “freemium” world, Tiny Tower offers the chance to build a tower and develop the businesses that open up inside.

Earning money lets you build new floors and attract various “bitizens” to open up shop in your tower or live there. There’s a good deal of customizability in terms of the look of your tower’s floors, the order they appear in and the way that the inhabitants appear, so what could have been a dull game of stacking fast-food joints turns out to be a brilliantly polished, engaging and addictive skyscraper simulator. This is Game Dev Story meets SimCity on your iPhone.

There is some solid social integration as well via GameCenter, and within the game you’ll find an amusing virtual social network called “BitBook” wherein you can monitor the social moods of your tower’s inhabitants. From its vibrantly colourful 8-bit graphics to its smooth and straight-forward gameplay, Tiny Tower is pixel perfect and well worth playing.

Price: Free
Developer: NimbleBit
Download: App Store

 

Continuity 2: The Continuation

Continuity 2: The Continuation

Continuity 2: The Continuation

Having won last year’s Best Student Game award, the developers of the first Continuity (which was a web game) decided it was time to up the ante and bring their amazingly clever game concept to the next level. The result is Continuity 2: The Continuation, and fans of the original will be thrilled to hear that it’s everything they could have hoped for — and it’s on their iPhone!

Continuity’s major claim to fame is a unique puzzle mechanic that’s both mind-bending and deceptively simplistic. Each level is made up of several tiles, and your goal in each level is to slide the tiles around so that your character can pick up a key and unlock the door at the end. This becomes increasingly more difficult as the number of tiles and the complexity of their arrangement increases.

There’s a lot to keep you busy in here, including 50 brand new levels, and given the success of their first game, there’s little doubt that we’ll be seeing more level packs and other updates for Continuity 2 in the near future. We can’t wait!

Price: $0.99
Developer: Ragtime Games LLC
Download: App Store

 

1-bit Ninja

1-bit Ninja

1-bit Ninja

In what must be one of the most interesting mash-ups of gameplay styles and visual aesthetics in recent memory, 1-bit Ninja brings together Mario-style platforming, endless running games, 8-bit graphics and a fully 3D perspective system with unlockable perspectives (including the very cool anaglyph mode).

While it sounds like it could be cluttered, the game is the essence of elegant simplicity. The controls are well-thought-out and designed for touch, so you can stop worrying about fiddly controls and focus on overcoming the game’s seriously unforgiving difficulty level. And make no mistake, this game is hard and proud of it. There’s also no going backward (without using a spring) so it sets itself apart from the standard platformer with a sense of linearity.

There are currently four worlds to traverse and a bunch of cute secrets to find if you’re the pixel peeping type. One fun feature is the replay mode, where you can save your best runs and then re-watch them from the main menu. With more levels on the way, 1-bit Ninja is an easy recommendation for fans of challenging and extremely polished platformers that bring something new to an old formula.

Price: $1.99
Developer: kode80 LLC
Download: App Store

 

Monster Soup

Monster Soup

Monster Soup

Last and certainly not least is Monster Soup, a colourful new title from the great Kieffer Bros., who brought us such iOS classics as Aqueduct. Their newest offering is an adorable story about the Soup System and its resident monsters, who are having some trouble with the evil Plubert.

Plubert is threatening to freeze the monsters and your job is to save them by drawing lines to connect like-coloured monsters in each level. The longer the chain, the more points you get and the more power-ups you can call upon. The game is very accessible and its charming presentation means that it’s easy to get hooked. The fact that you can use a two finger upward swipe to speed up gameplay makes it perfect for more hardcore gamers too, who are looking for a faster pace.

As one expects from the Kieffer Bros., the visuals are polished and run smoothly even on older devices, and the attention to detail is very clear. The monsters may be a bit small for those with larger fingers to successfully maneuver around, but it’s not a significant issue since the controls are very responsive and forgiving. Go save some monsters!

Price: $0.99
Developer: Kieffer Bros.
Download: App Store

 

What Have You Been Playing?

If you can peel yourself away from these gems, then toss us a comment and let us know what else you’ve been playing in case we missed any winners!

Win One of Five Copies of Ben the Bodyguard!

Just yesterday, we reviewed Ben the Bodyguard, an innovative way to store your passwords, private photos and other goodies on your iPhone. The unique way that the app interacts with the user makes it fun to use, but also functional as well.

We were so excited about the app, that we’ve decided to hold a little competition to give away five licenses of the iPhone app. Want to know how to win? Find out after the break.

How to Enter

So what do you need to do to get your free copy of Ben the Bodyguard? First, follow us on Twitter: @iphoneappstorm. Then, put a comment on this very post with your Twitter handle, plus the top reason why you would need Ben to protect your info. We’ll pick out the top five winners next week and announce them on this very post. Thanks in advance to all that enter.

Ben the Bodyguard

Ben the Bodyguard