UISlider 制作的声音显示效果

简单地演示效果,直接在入口类实现

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];

    UISlider *slider = [[UISlider alloc] init];
    slider.center = CGPointMake(160, 400);
    slider.bounds = CGRectMake(0, 0, 240, 20);
    slider.tag = 100;
    slider.minimumValue = 0;
    slider.maximumValue = 100;
    slider.minimumTrackTintColor = [UIColor greenColor]; //已经滑过的颜色
    slider.maximumTrackTintColor = [UIColor blueColor];//滑动条的颜色
    slider.value = 30;
    [slider addTarget:self action:@selector(changeVoice:) forControlEvents:UIControlEventValueChanged];
    [self.window addSubview:slider];

    _imageView = [[UIImageView alloc] init];
    _imageView.center = CGPointMake(20, 400);
    _imageView.bounds = CGRectMake(0, 0, 20, 20);
    _imageView.image = [UIImage imageNamed:@"mid.png"];
    [self.window addSubview:_imageView];

//    [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(addValue:) userInfo:slider repeats:YES];

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];
    btn.frame = CGRectMake(0, 0, 20, 20);
    [_imageView addSubview:btn];
    _imageView.userInteractionEnabled = YES;
    [btn addTarget:self action:@selector(voiceChange) forControlEvents:UIControlEventTouchUpInside];
    return YES;
}

//定时器方法,声音自动提高,但这时虽然滑动条的值发生变化,但是并不触发方法
- (void)addValue:(NSTimer *)timer
{
    UISlider *slider = (UISlider *)[timer userInfo];
    if (slider.value < 30)
    {
        slider.value += 0.1;
    }
}

//声音的高低可又图标表示出来
- (void)changeVoice:(UISlider *)slider
{
    if (slider.value == 0)
    {
        _imageView.image = [UIImage imageNamed:@"none.png"];
        return;
    }
    if (slider.value < 30)
    {
        _imageView.image = [UIImage imageNamed:@"low.png"];
        return;
    }
    if (slider.value < 60)
    {
        _imageView.image = [UIImage imageNamed:@"mid.png"];
        return;
    }
    if (slider.value <= 100)
    {
        _imageView.image = [UIImage imageNamed:@"high.png"];
    }
}

//当声音不为 0 的时候,点击声音图标总是将声音置 0,当再次点击图标的时候,声音恢复
- (void)voiceChange
{
    UISlider *slider = (UISlider *)[self.window viewWithTag:100];
    static int count = 0;
    count ++;
    if (count % 2 != 0)
    {
        _voiceValue = slider.value;  //记住上次的声音
        slider.value = 0;
    }
    else
    {
        if (slider.value != 0) //在回复声音之前已经将声音调节不再为0,则使用递归
        {
            [self voiceChange];
            count = 0;
        }
        slider.value = _voiceValue;
    }
}

@end

代码中的定时器本来是像模拟一下让声音自动提升的效果,演示的时候才知道这样并不可以,想了想,滑动条应该是需要与用户交互才能显示它存在的意义。

时间: 2024-11-06 06:30:16

UISlider 制作的声音显示效果的相关文章

EDIUS中声音的淡入淡出怎样调节?

使用EDIUS制作视频声音的淡入淡出是比较常见的一种视频剪辑形式,本文小编就给大家讲解如何做EDIUS视频声音淡入淡出. 1.将素材拖到合适位置的时间线轨道上,打开声音的波形显示开关,如下图中红框显示: 2.打开声音的关键帧设置开关,也就是音频前面的“VOL/PAN”.这样的话,声音就能在任意位置添加关键帧了.不停的点击关键帧开关,会有声音控制的红线和蓝线的相互切换,VOL红线是经常用到的,PAN蓝线一般不用. 3.制作EDIUS视频声音淡入淡出的时候,给红线添加关键点,然后下拉前或后关键帧即可

央视春晚摇一摇最有可能颠覆哪些行业?

昨 晚,全国人民都在跟随着央视春晚摇动着手机.摇啊摇,有的摇出了红包,有的摇出了卡券.开玩笑的说,国家体育总局花了二十年没有搞起来的全民健身运动,微 信只花了一个晚上就达到目的了.其中22:30央视春晚摇一摇送红包这波,微信总摇一摇次数达72亿次,峰值高达一分钟8.1亿次(22:34),送出红 包1.2亿个,背后是牛逼的技术和强大的商业逻辑. 我 必须要为“春晚摇一摇”点32个赞.其一是升级了红包的概念,将微信红包从用户个人行为转向为企业营销行为,商业化才是最有前途的:其二是解放了摇一摇功 能,

AI概念分析

设计的本质是抽象变化. 关于Composites的用法又有了新的认识:在Task返回值的时候尽量要与真实情况相符合,就像Selector下的子节点一旦成功Selector就返回,说明Selector是一种选择的方式,而Sequence下的子节点一旦失败就返回,说明它就是用来一步一步执行的.所以在选择使用的时候尽量按照规矩来,减少强制性的返回结果,这样显得更和谐,别人读程序也更好懂. 上面是整个AI系统中的工具. Pawn Action 也是要在AIController中运行的,有两个特点,Act

PowerPoint演示文稿中设置自定义动画

动态的东西,总是给人活灵活现的感觉.在制作演示文稿时,除了会设置幻灯片的切换方式外,还通常会为幻灯片中的某些内容(如图片.文字等)设置动画效果,使幻灯片欣赏起来不至于太呆板. 1.制作进入动画效果 选中需要设置动画效果的对象,如文本.图片等.单击"动画"选项卡,单击"无动画"后的向下箭头,选择一种动画效果即可,如图1所示. 2.制作强调动画效果 细心的读者会发现,在前一种动画设置中,PowerPoint只提供了对象进入时的动画效果,如要设置退出.强调等效果该怎么办呢

制作进度条(UISlider)

怎样判断是否应当使用进度条 用进度条的主要目的是为了用一根管子的充满程度来直观地表示某种数值的百分比,进度条分为可拖动和不可拖动两种. 可拖动进度条和不可拖动进度条的原理几乎是一模一样,唯一的区别是可拖动进度条上多了一个拖动快和BoxCollider来接收事件,而不可拖动的进度条只能显示一个数字的百分比,无法由玩家去操控. 在判断是否应该使用进度条时,有以下的规律可以遵循: (1)如果某一种值,它有最大值,需要表达它当前的值的占比,这个时候用进度条会非常直观.此时应当用不可拖动的进度条.例如:角

用OpenCV制作视频控制播放器(无声音)

申明:OpenCV是计算机视觉库,所以用在图片或视频处理上,故播放的视频暂时没有声音 软件:用OpenCV制作视频控制播放器(无声音) 功能说明:新建播放窗口,添加进度条可以拖动视频播放. 流程图: 功能说明: 1. 新建进度条 cvCreatTrackbar("","",&,frames,callback) 2.获取总帧数 cvGetCaptureProperty(&,id) double cvGetCaptureProperty( CvCaptu

Swift - 制作一个录音机(声音的录制与播放)

1,技术介绍 (1)AVFoundation.framework框架提供了AVAudioRecorder类.它可以实现录音功能. (2)而使用该框架的AVAudioPlayer类,可以实现声音的播放. 2,下面制作一个录音机样例 (1)按住录音按钮则开始录音,松开则停止录音.录音文件保存在用户文件夹下. (2)录音过程中会实时显示声音的音量大小(这个可以用来做声音脉冲图,获得更好的展示效果) (3)点击播放录音则可播放录制的声音文件. 3,效果图如下: 4,代码如下: 1 2 3 4 5 6 7

3D 声音实验室开始提供3D音频制作

音频是制作沉浸式虚拟现实(VR)或360度体验的重要组成部分. 3D 声音实验室专注于3D / VR音频,并已宣布音频技术随时可供MainBerlin工作室的创作者和艺术家使用. 3D 声音实验室使用最先进的3D音频技术,由Sf?ar提供,Sf?ar是3D声音实验室与Voodoopop合资组建的双耳3D声音制作工具的顶级品牌. MainBerlin的共同所有者Peer Neumann表示:"我们很荣幸能够成为欧洲第一家商业工作室,拥有由3D声音实验室提供的全面Sf?ar设备,相信我们可以通过沉浸

(转)CocosCreator零基础制作游戏《极限跳跃》九、为游戏添加声音音效功能

CocosCreator零基础制作游戏<极限跳跃>九.为游戏添加声音音效功能 游戏的声音很重要,我们在这个游戏中需要加2个音效,一个背景音乐...第一个音效在玩家与障碍物碰撞的地方加碰撞音效,第二个在玩家主角坠落到屏幕底部的时候加游戏结束的音效.然后游戏开始的时候加载背景音乐. 我们一开始在MainScene场景中的声音图标节点就是我们用来控制声音的开关.. 首先修改guawileft.js脚本,添加音效资源,在onload设置声音大小.代码: 01 //guanwileft.js 02