你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS_36聲詞同步

iOS_36聲詞同步

編輯:IOS開發綜合

最終效果圖:

\



<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+xKPQzTwvcD4KPHA+PC9wPgo8cHJlIGNsYXNzPQ=="brush:java;">// // Sentence.h // 36_聲詞同步 // // Created by beyond on 14-9-12. // Copyright (c) 2014年 com.beyond. All rights reserved. // 模型,句子 #import @interface Sentence : NSObject // 文字 @property (nonatomic, copy) NSString *text; // 在音頻文件中,朗誦開始的時間 @property (nonatomic, assign) double startTime; @end
控制器

//
//  BeyondController.m
//  36_聲詞同步
//
//  Created by beyond on 14-9-12.
//  Copyright (c) 2014年 com.beyond. All rights reserved.
//

#import "BeyondController.h"

#import "Sentence.h"

#import "SongTool.h"


@interface BeyondController ()
// 句子對象數組
@property (nonatomic, strong) NSArray *sentenceArr;
// 開始播放就開啟時鐘,監聽 音樂的播放進度
@property (nonatomic, strong) CADisplayLink *link;
// 音樂播放器 可以獲得當前播放的時間 【currentTime】
@property (nonatomic, strong) AVAudioPlayer *sentencePlayer;
@end

@implementation BeyondController

// 懶加載,需要時才創建 時鐘
- (CADisplayLink *)link
{
    if (!_link) {
        // 綁定時鐘方法
        self.link = [CADisplayLink displayLinkWithTarget:self selector:@selector(update)];
    }
    return _link;
}

// 懶加載,需要時才創建 句子對象數組,從Plist中的字典數組,轉成對象數組
- (NSArray *)sentenceArr
{
    if (!_sentenceArr) {
         self.sentenceArr = [Sentence objectArrayWithFilename:@"redStory.plist"];
    }
    return _sentenceArr;
}


- (void)viewDidLoad
{
    [super viewDidLoad];
    // 工具類播放音樂,並用成員變量記住 創建的播放器對象【可拿到播放的currentTime】
    self.sentencePlayer = [SongTool playMusic:@"一東.mp3"];
    // 播放背景音樂
    [SongTool playMusic:@"Background.caf"];
    // 同時,開啟時鐘
    [self.link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
    self.tableView.contentInset = UIEdgeInsetsMake(20, 0, 0, 0);
}
#pragma mark - 時鐘方法
// 重點~~~~時鐘綁定的方法
- (void)update
{
    // 獲取當前播放的位置(第多少秒,比如第10秒)
    double currentTime = self.sentencePlayer.currentTime;
    // 遍歷,找出對應的一句
    int count = self.sentenceArr.count;
    for (int i = 0; i= s.startTime && currentTime < nextS.startTime) {
            // 選中並高亮對應行的文字
            NSIndexPath *path = [NSIndexPath indexPathForRow:i inSection:0];
            [self.tableView selectRowAtIndexPath:path animated:YES scrollPosition:UITableViewScrollPositionTop];
            break;
        }
    }
}
#pragma mark - tableView數據源方法
// 共多少行,即多少句
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return self.sentenceArr.count;
}
// 每一行的獨一無二的文字
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    // 1.創建cell
    static NSString *cellID = @"Sentence";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellID];
    }
    
    // 2.設置cell  獨一無二的數據
    Sentence *s = self.sentenceArr[indexPath.row];
    cell.textLabel.text = s.text;
    
    return cell;
}


@end


音樂播放工具類












  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved