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)