AVAudioPlayer简易封装

简介:

AVAudioPlayer简易封装

 

[说明]

AVAudioPlayer简易封装,仅仅支持播放,暂停,停止,暂停时候带有渐隐效果,自己用,没有参考价值.

 

[源码]

https://github.com/YouXianMing/AVAudioPlayer-

 

一个定时器的封装类源码(该定时器可以指定运行的次数)

//
//  SpecialTimer.h
//  Music
//
//  Created by XianMingYou on 15/4/13.
//  Copyright (c) 2015年 XianMingYou. All rights reserved.
//

#import <Foundation/Foundation.h>

@class SpecialTimer;

@protocol SpecialTimerDelegate <NSObject>
@optional
- (void)specialTimer:(SpecialTimer *)specialTimer CurrentCount:(NSInteger)count;

@end

@interface SpecialTimer : NSObject

/**
 *  定时器代理
 */
@property (nonatomic, weak) id<SpecialTimerDelegate>   delegate;

/**
 *  重复执行的次数
 */
@property (nonatomic) NSInteger                        repeatTimes;

/**
 *  定时器执行的总时间
 */
@property (nonatomic) NSTimeInterval                   totalDuration;

/**
 *  激活定时器
 */
- (void)fire;

/**
 *  让定时器无效
 */
- (void)invalid;

@end


//
//  SpecialTimer.m
//  Music
//
//  Created by XianMingYou on 15/4/13.
//  Copyright (c) 2015年 XianMingYou. All rights reserved.
//

#import "SpecialTimer.h"

@interface SpecialTimer ()

@property (nonatomic)         NSInteger   count;
@property (nonatomic, strong) NSTimer    *timer;

@end

@implementation SpecialTimer

- (void)fire {
    // 参数没有配置就返回
    if (self.repeatTimes <= 0 || self.totalDuration <= 0) {
        return;
    }
    
    // 计数时间间隔
    NSTimeInterval timeInterval = self.totalDuration / self.repeatTimes;
    
    // 开启定时器
    self.timer = [NSTimer scheduledTimerWithTimeInterval:timeInterval
                                                  target:self
                                                selector:@selector(timerEvent)
                                                userInfo:nil
                                                 repeats:YES];
}

- (void)timerEvent {
    // 运行代理
    if (_delegate || [_delegate respondsToSelector:@selector(specialTimer:CurrentCount:)]) {
        [_delegate specialTimer:self CurrentCount:_count];
    }
    
    _count++;
    if (_count >= _repeatTimes) {
        _count = 0;
        [self.timer invalidate];
    }
}

- (void)invalid {
    [self.timer invalidate];
}

@end

目录
相关文章
|
7月前
[笔记]音视频学习之SDL篇《七》用类封装SDL
[笔记]音视频学习之SDL篇《七》用类封装SDL
|
9月前
|
小程序 JavaScript 前端开发
小程序封装加载动画
在小程序的开发中,页面的加载过程可能会因为网络状况的不好或数据量的过大而显得非常缓慢,这时候加上一个加载动画就能有效的缓解用户的等待焦虑感。而对于应用的多个页面来说,使用全局加载动画可以提高用户体验,让应用显得更加美观和专业。本篇技术分享博客将为大家介绍在小程序中封装全局加载动画的具体实现步骤,帮助您提高小程序的用户体验。通过上述步骤,我们就完成了小程序中封装全局加载动画的具体实现方法。在实际开发中,我们可以根据实际需求对组件样式和方法进行调整和修改,以满足不同的开发需求。
186 0
|
JavaScript 前端开发
封装一个视频组件(可模拟画中画效果)
封装一个视频组件(可模拟画中画效果)
封装一个视频组件(可模拟画中画效果)
|
缓存 iOS开发
iOS开发 - 用AVPlayer封装一个播放器
iOS开发 - 用AVPlayer封装一个播放器
360 0
|
API iOS开发
iOS开发-SDWebImage的回调不addSubView不会调用
iOS开发-SDWebImage的回调不addSubView不会调用
61 0
iOS开发-SDWebImage的回调不addSubView不会调用
|
iOS开发
如何使用iOS手势UIGestureRecognizer
如何使用iOS手势UIGestureRecognizer
74 0
|
存储 缓存 iOS开发
AVFoundation | 封装一个好用的视频播放器
AVFoundation是苹果在iOS和OS X系统中用于处理基于时间的媒体数据的Objective-C框架. 供使用者来开发媒体类型的应用程序。
289 0
AVAudioPlayer播放音频文件时没声音
AVAudioPlayer播放一个mp3文件时,居然没有声音。mp3文件是放在工程里面的,路径没有错误但就是死活没有声音。 func playSound() { let notifyUrl = NSBundle.
1636 0