Objective-C/UICatalog/AAPLStepperViewController.m

/*
    Copyright (C) 2015 Apple Inc. All Rights Reserved.
    See LICENSE.txt for this sample’s licensing information
    
    Abstract:
    A view controller that demonstrates how to use UIStepper.
*/
 
#import "AAPLStepperViewController.h"
 
@interface AAPLStepperViewController ()
 
@property (nonatomic, weak) IBOutlet UIStepper *defaultStepper;
@property (nonatomic, weak) IBOutlet UIStepper *tintedStepper;
@property (nonatomic, weak) IBOutlet UIStepper *customStepper;
 
@property (nonatomic, weak) IBOutlet UILabel *defaultStepperLabel;
@property (nonatomic, weak) IBOutlet UILabel *tintedStepperLabel;
@property (nonatomic, weak) IBOutlet UILabel *customStepperLabel;
 
@end
 
 
#pragma mark -
 
@implementation AAPLStepperViewController
 
- (void)viewDidLoad {
    [super viewDidLoad];
 
    [self configureDefaultStepper];
    [self configureTintedStepper];
    [self configureCustomStepper];
}
 
 
#pragma mark - Configuration
 
- (void)configureDefaultStepper {
    self.defaultStepper.value = 0;
    self.defaultStepper.minimumValue = 0;
    self.defaultStepper.maximumValue = 10;
    self.defaultStepper.stepValue = 1;
 
    self.defaultStepperLabel.text = [NSString stringWithFormat:@"%ld", (long)self.defaultStepper.value];
    [self.defaultStepper addTarget:self action:@selector(stepperValueDidChange:) forControlEvents:UIControlEventValueChanged];
}
 
- (void)configureTintedStepper {
    self.tintedStepper.tintColor = [UIColor aapl_applicationBlueColor];
 
    self.tintedStepperLabel.text = [NSString stringWithFormat:@"%ld", (long)self.tintedStepper.value];
    [self.tintedStepper addTarget:self action:@selector(stepperValueDidChange:) forControlEvents:UIControlEventValueChanged];
}
 
- (void)configureCustomStepper {
    // Set the background image states.
    UIImage *stepperBackgroundImage = [UIImage imageNamed:@"stepper_and_segment_background"];
    [self.customStepper setBackgroundImage:stepperBackgroundImage forState:UIControlStateNormal];
 
    UIImage *stepperHighlightedBackgroundImage = [UIImage imageNamed:@"stepper_and_segment_background_highlighted"];
    [self.customStepper setBackgroundImage:stepperHighlightedBackgroundImage forState:UIControlStateHighlighted];
 
    UIImage *stepperDisabledBackgroundImage = [UIImage imageNamed:@"stepper_and_segment_background_disabled"];
    [self.customStepper setBackgroundImage:stepperDisabledBackgroundImage forState:UIControlStateDisabled];
    
    // Set the image which will be painted in between the two stepper segments (depends on the states of both segments).
    [self.customStepper setDividerImage:[UIImage imageNamed:@"stepper_and_segment_divider"] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal];
    
    // Set the image for the + button.
    UIImage *stepperIncrementImage = [UIImage imageNamed:@"stepper_increment"];
    [self.customStepper setIncrementImage:stepperIncrementImage forState:UIControlStateNormal];
    
    // Set the image for the - button.
    UIImage *stepperDecrementImage = [UIImage imageNamed:@"stepper_decrement"];
    [self.customStepper setDecrementImage:stepperDecrementImage forState:UIControlStateNormal];
 
    self.customStepperLabel.text = [NSString stringWithFormat:@"%ld", (long)self.customStepper.value];
    [self.customStepper addTarget:self action:@selector(stepperValueDidChange:) forControlEvents:UIControlEventValueChanged];
}
 
 
#pragma mark - Actions
 
- (void)stepperValueDidChange:(UIStepper *)stepper {
    NSLog(@"A stepper changed its value: %@.", stepper);
 
    // Figure out which stepper was selected and update its associated label.
    UILabel *stepperLabel;
    if (self.defaultStepper == stepper) {
        stepperLabel = self.defaultStepperLabel;
    }
    else if (self.tintedStepper == stepper) {
        stepperLabel = self.tintedStepperLabel;
    }
    else if (self.customStepper == stepper) {
        stepperLabel = self.customStepperLabel;
    }
 
    stepperLabel.text = [NSString stringWithFormat:@"%ld", (long)stepper.value];
}
 
@end