UIControl和它的子类

UIControl的核心功能: 为控制控件通过addTarget:action:forControlEvents: 方法来添加事件; 通过remove:…来移除事件

#import "MainViewController.h"
#import <AVFoundation/AVFoundation.h>// (1).引用处理音频的系统文件
@interface MainViewController ()
#pragma mark UIControl的子类们

// 两个按键,增大减少
@property(nonatomic, retain)UIStepper *stepper;     // 步进

@property(nonatomic, retain)AVAudioPlayer *play;    // 音频播放器

// (1).创建两个属性.gif 一个数组用于保存图片集
// 它相当于一个相框,专门用作显示图片,可以存放一个图片或一组图片
@property(nonatomic, retain)UIImageView *tomcatImageView;
@property(nonatomic, retain)NSMutableArray *picArr;

// (1).创建属性.滑块 通常用于控制视频播放进度,控制音量等
// 它也是继承于UIControl,它提供了一系列连续的值
@property(nonatomic, retain)UISlider *slider;

// (1).创建属性 用户界面分段控制,它是iOS中的分段控件
// 每个segment都能被点击,相当于集成了若干个button,是可以实现单选的控件
// 通常我们会点击不同的segment来切换不同的view
@property(nonatomic, retain)UISegmentedControl *segmented;

@end

@implementation MainViewController

-(void)dealloc
{
    [_segmented release];
    [_slider release];
    [_picArr release];
    [_tomcatImageView release];
    [_play release];
    [_stepper release];
    [super dealloc];
}

- (void)viewDidLoad {
    [super viewDidLoad];

    // 创建个UIStepper
    self.stepper = [[UIStepper alloc]initWithFrame:CGRectMake(0, 170, 5, 5)];
    [self.view addSubview:self.stepper];
    [self.stepper release];

    // 一次 +2
    self.stepper.stepValue = 2;
    [self.stepper addTarget:self action:@selector(stepAction:) forControlEvents:UIControlEventValueChanged];


    // 实现播放本地MP3音乐的功能
    // (2).找到文件所对应的路径(盛夏光年)
    NSString *path = [[NSBundle mainBundle] pathForResource:@"盛夏光年" ofType:@"mp3"];

    // (3).创建
    self.play = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:path] error:nil];

    // (4).播放
    [self.play play];
    [self.play release];

    // (5).用UIStepper调整当前的音量就是用self.stepper调用方法



    // 让图片拥有毛玻璃效果
    // (1).添加一个图片.毛玻璃
    UIImage *image = [UIImage imageNamed:@"580.jpeg"];
    UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 170)];
    // 设置单张图片
    imageView.image = image;
    [self.view addSubview:imageView];
    [imageView release];

    // (2).先创建一个效果.毛玻璃
    UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];

    // 创建一个毛玻璃视图,指定效果.毛玻璃
    UIVisualEffectView *effectView = [[UIVisualEffectView alloc]initWithEffect:effect];
    effectView.frame = imageView.frame;
    [imageView addSubview:effectView];


    // 实现动画的连续播放(播放gif)
    // (2).创建.gif 设置一组动态图片
    self.tomcatImageView = [[UIImageView alloc]initWithFrame:CGRectMake(40, 200, 300, 300)];
    [self.view addSubview:self.tomcatImageView];
    [self.tomcatImageView release];

    // (3).对容器使用之前,一定要对容器进行初始化.gif
    self.picArr = [NSMutableArray array];

    // (4).照片一共有0 - 39对图片的名称进行拼接.gif
    for (NSInteger i = 0; i < 40; i++) {
        // (5)拼接图片的名称.gif
        NSLog(@"%02ld", i);//输出两位数 不够两位用0补位(目的是与图片的编号一致)
        NSString *picName = [NSString stringWithFormat:@"eat_%02ld.jpg", i];//
        NSLog(@"%@", picName);
        // (6).根据图片名称找到对应的图片.gif
        UIImage *image = [UIImage imageNamed:picName];
        // (7).把图片添加到数组中.gif
        [self.picArr addObject:image];
    }

    // (8).把数组中的图片给tomcatImageView.gif
    self.tomcatImageView.animationImages = self.picArr;

    //
    // (9).设置播放一次一组动态图片的时间.gif // 有默认值
    self.tomcatImageView.animationDuration = 3;

    // (10).设置重复次数.gif
    self.tomcatImageView.animationRepeatCount = 10;

    // (11).开始动画.gif
    [self.tomcatImageView startAnimating];


    // UISlider(滑块 手机锁之类的)
    // (2).创建.滑块
    self.slider = [[UISlider alloc]initWithFrame:CGRectMake(90, 500, 200, 10)];
    self.slider.backgroundColor = [UIColor blackColor];
    [self.view addSubview:self.slider];
    [self.slider release];

    // 最大值,最小值
    self.slider.minimumValue = 0.5;
    self.slider.maximumValue = 5;
    // 设置滑块的当前值 这里如果想用滑块调节动画播放速度,那么应让该值等于默认播放一次一组动态图片的时间
    self.slider.value = 3;
    // 设置滑块划过区域的颜色
    self.slider.minimumTrackTintColor = [UIColor cyanColor];

    [self.slider addTarget:self action:@selector(sliderAction:)forControlEvents:UIControlEventValueChanged];// 注意类型是改变数值


    // UISegmentedControl initWithItems 独有初始化方法, 用来创建多个分段
    self.segmented = [[UISegmentedControl alloc]initWithItems:[NSMutableArray arrayWithObjects:@"0",@"1",@"2", @"3", nil]];
    // 为制定下标的分段设置title
    [self.segmented setTitle:@"卍解" forSegmentAtIndex:2];
    // (property)segmentedControl条的颜色(含每个segment的颜色) 默认为蓝色
    // 点击选中的颜色
//    self.segmented.tintColor = [UIColor redColor];
    self.segmented.frame = CGRectMake(30, 550, 320, 80);
    self.segmented.backgroundColor = [UIColor greenColor];
    [self.view addSubview:self.segmented];
    [self.segmented release];
    [self.segmented addTarget:self action:@selector(segAction:) forControlEvents:UIControlEventValueChanged];
}

-(void)segAction:(UISegmentedControl *)seg
{
    // 被选中的segment 是UISC的一条属性(property)
    // 通过点击知道 按的是哪个按钮 按钮默认是从0开始的
    NSLog(@"%ld", seg.selectedSegmentIndex);
}

-(void)sliderAction:(UISlider *)slider
{
    NSLog(@"%g", slider.value);
    // 用滑块来调整动画的播放时长
    self.tomcatImageView.animationDuration = slider.value;
    [self.tomcatImageView startAnimating];
    if (slider.value == 5) {
        // 结束动画可以额外铺一个button将此属性写在点击按钮方法里
        [self.tomcatImageView stopAnimating];
    }
//    self.play.volume = slider.value ; // 通过滑块改变播放动画的音量
}

// 调整当前的音量的方法
-(void)stepAction:(UIStepper *)stepper
{
    NSLog(@"%g", stepper.value);
    // 让self.play.volume(音量) 和self.stepper.value相关联(因为两者的类型都相同 全都是double类型)
    self.play.volume  = self.stepper.value;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

@end
                    [类的继承关系](https://img-blog.csdn.net/20150813200039999)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值