2012年11月11日 星期日

UIStepper的使用

可參考http://furnacedigital.blogspot.tw/2011/12/uistepper.html


以下是實驗結果,試了一個靜態及一個動態的實作。

1. 開啓專案

2. 因為要實驗貼圖的效果,因此加入了Mac的圖庫

3. 在storyboard加上一個stepper及兩個Label

4. 在mainViewController.h註冊所需元件
#import <UIKit/UIKit.h>

@interface mainViewController : UIViewController

@property (weak, nonatomic) IBOutlet UIStepper *stepper1;
@property (weak, nonatomic) IBOutlet UILabel *showLabel;

@property (nonatomic) UIStepper *stepper2;

@property (weak, nonatomic) IBOutlet UILabel *showLabel2;

@end




5. 在mainViewController.m加上程式碼
#import "mainViewController.h"

@interface mainViewController ()

@end

@implementation mainViewController

@synthesize showLabel, stepper1;

@synthesize stepper2;
@synthesize showLabel2;


- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
   
   
    //資源分配與位置設定
    stepper2 = [[UIStepper alloc] init];
   
    // size value are ignore,注意大小不能設定,因此設為任何值都可以,此處為0
    [stepper2 setFrame:CGRectMake(300, 500, 0, 0)];
   
  //  [stepper2 sizeToFit];
    
  //  [stepper2 setCenter:self.view.center];
   
    //設定stepper的範圍與起始值
    [stepper2 setMaximumValue:10.0];
    [stepper2 setMinimumValue:0.0];
    [stepper2 setValue:5.5];
   
    //設定stepper每次增減的值
    [stepper2 setStepValue:0.1];
   
    //設定stepper可以按住不放來連續更改數值
    [stepper2 setContinuous:YES];
   
    //設定stepper是否循環(到最大值時再增加數值最從最小值開始)
    [stepper2 setWraps:YES];
   
    //將stepper加入UIControlEventValueChanged的觸發事件中並設定觸發時所處理的函式
    [stepper2 addTarget:self action:@selector(stepperValueIschanged) forControlEvents:UIControlEventValueChanged];
   
    NSString *imageName1 = [NSString stringWithFormat:@"Doggie.gif"];
   
    NSString *imageName2 = [NSString stringWithFormat:@"Pointy.gif"];
   
    NSString *imageName3 = [NSString stringWithFormat:@"RedDog.gif"];
   
   
    UIImage *minImage = [[UIImage imageNamed:imageName1] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 1, 0, 0)];
   
    UIImage *maxImage = [[UIImage imageNamed:imageName2] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 1, 0, 0)];
   
    UIImage *divImage = [[UIImage imageNamed:imageName3] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 1, 0, 0)];

    [stepper2 setDecrementImage:minImage forState:UIControlStateNormal];
    [stepper2 setIncrementImage:maxImage forState:UIControlStateNormal];
   
    [stepper2 setDividerImage:divImage forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal];
   
    //將stepper加至畫面中
    [self.view addSubview:stepper2];

   
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
- (IBAction)stepperValueChange:(id)sender {
   
    showLabel.text = [NSString stringWithFormat:@"Stepper1 Value = %3.2f", stepper1.value];
   
}

- (void) stepperValueIschanged
{
    showLabel2.text = [NSString stringWithFormat:@"Stepper2 Value = %2.2f", stepper2.value];
}


@end


6. 實驗結果,因為大小不能設定,所以第二個Stepper的圖示有點太大。如果要使用圖示效果,還是使用兩個Button來組合,還比較好看。