iOS-滑竿、分段选择器、开关按钮的简单实现

    滑竿、分段选择器、开关按钮的简单实现,它们都是UIControl的子类、下面是代码示例:


#import "ViewController.h"

 

@interface ViewController ()

{

    UIView *bgView;

    UIImageView *animationView;

}

@end

 

@implementation ViewController

 

- (void)viewDidLoad {

    [super viewDidLoad];

 

    bgView = [[UIView alloc]initWithFrame:self.view.frame];

    [self.view addSubview:bgView];

    

    

    NSMutableArray *images = [NSMutableArray array];

    for (int i=1; i<=6;i++) {

       

        [images addObject:[UIImage imageNamed:[NSString stringWithFormat:@"niao2%d(被拖移).tiff",i]]];

       

    }

    

    animationView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];

    animationView.animationImages= images;

    animationView.animationRepeatCount = -1;

//   animationView.animationDuration = 3;

    [self.view addSubview:animationView];

    

//    1、分段选择控件 使用多个按钮的时候  可以选择 使用  分段选择控件

//    2、开关按钮

//    3、滑杆

    

    

//    今天练习的 都是UIControl的子类 包括之前学的按钮

//    1、分段选择控件

//    分段选择控件 再出始化的时候   需给他一个标题的数组

    UISegmentedControl *segment = [[UISegmentedControl alloc]initWithItems:@[@"娱乐",@"军事",@"科技"]];

    segment.frame = CGRectMake(100, 100, 200, 40);

//    设置是否记忆上一个按钮

    segment.momentary = YES;

    [segment addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];

    [self.view addSubview:segment];

    

    

    

//    开关按钮

//    开关按钮  一般需要  记录用户设置的状态  1、可以用后台提供的接口 设置开关按钮的 开关 (可以在不同设备间 同步状态(信息) 2、在本地保存设置

    UISwitch *switchButton = [[UISwitch alloc]initWithFrame:CGRectMake(100, 200, 50, 40)];

    [switchButton addTarget:self action:@selector(switchAction:) forControlEvents:UIControlEventValueChanged];

    

    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

//    设置Switch的默认状态

   switchButton.on = [userDefaults boolForKey:@"isOn"];

    

//    设置开关按钮  打开的时候  轨道的颜色

   switchButton.onTintColor = [UIColor redColor];

//    设置开关按钮  关闭时候的  轨道颜色

   switchButton.tintColor = [UIColor greenColor];

//    设置开关按钮 小圆圈的颜色

   switchButton.thumbTintColor = [UIColor yellowColor];

    

    [self.view addSubview:switchButton];

    

    

//    滑杆

    UISlider *slider = [[UISlideralloc]initWithFrame:CGRectMake(100,300, 200,10)];

    

    [slider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged];

    

//    设置滑杆的最小值

    slider.minimumValue = 1;

    

//    设置滑杆的最大值

    slider.maximumValue = 10;

    

//    设置滑杆默认位置

    slider.value = 1;

    

//    设置 滑杆最小值的轨道颜色

    slider.minimumTrackTintColor = [UIColor redColor];

//    滑杆 最大值的 轨道颜色

    slider.maximumTrackTintColor = [UIColor purpleColor];

//    小圆圈的颜色

    slider.thumbTintColor = [UIColoryellowColor];

    

    [self.view addSubview:slider];

    

}

 

// 手指 触摸到屏幕上的时候  触发

- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event

{

    

    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"isOn"]!=NO) {

       

        //    获得 触摸事件

       UITouch *touch = [touches anyObject];

        //    获得触摸的点

       CGPoint touchPoint = [touch locationInView:self.view];

       

        //    动画没有执行的时候 调用 里面的方法

       if (animationView.isAnimating != YES){

           

           animationView.alpha = 1.0;

           

           animationView.center = touchPoint;

           

           [animationView startAnimating];

       }

       

    }

 

    

}

 

//手指  在屏幕上 移动 触发

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

{

    

    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"isOn"] != NO) {

       

        //    获得 触摸事件

       UITouch *touch = [touches anyObject];

        //    获得触摸的点

       CGPoint touchPoint = [touch locationInView:self.view];

       

       animationView.center = touchPoint;

       

    }

    

}

 

//手指 离开屏幕的  时候(触摸结束) 触发

- (void)touchesEnded:(NSSet*)touches withEvent:(UIEvent *)event

{

    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"isOn"] != NO) {

       

        [UIView animateWithDuration:2 animations:^{

           animationView.alpha = 0.0;

       } completion:^(BOOL finished) {

           [animationView stopAnimating];

       }];

       

    }

}

 

- (void)sliderAction:(UISlider*)sender

{

    NSLog(@"%0.2f",sender.value);

    

    animationView.animationDuration = sender.value;

}

 

- (void)switchAction:(UISwitch*)sender

{

    NSLog(@"%d",sender.isOn);

    

    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

   [userDefaults setBool:sender.isOn forKey:@"isOn"];

   [userDefaults synchronize];

    

}

 

- (void)segmentAction:(UISegmentedControl*)sender

{

    NSLog(@"%ld",sender.selectedSegmentIndex);

    

    switch (sender.selectedSegmentIndex) {

       case 0:

           bgView.backgroundColor = [UIColorbrownColor];

           break;

       case 1:

           bgView.backgroundColor = [UIColorwhiteColor];

           break;

       case 2:

           bgView.backgroundColor = [UIColorlightGrayColor];

           break;

       default:

           break;

    }

    

}


你可能感兴趣的:(iOS,UIControl子类)