1.监测网络状态:

- (void)checkNetwork {
__block NSString *tips;
_reachiabilityManager = [AFNetworkReachabilityManager manager];
[_reachiabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
switch (status) {
case -:{
tips = @"未知网络错误";
break;
}
case :{
tips = @"暂无网络,请检查网络";
break;
}
case :{
tips = @"当前连接的数据流量";
break;
}
case :{
tips = @"当前连接的是wifi";
break;
}
default:
break;
}
if (tips.length) {
// 提示
}
}];
[_reachiabilityManager startMonitoring];
}

2.进入直播页面判断权限:

// 判断是否是模拟器
if ([[UIDevice currentDevice] isSimulator]) {
[self showNoticeMessage:@"请使用真机运行"];
return NO;
} // 判断是否有摄像头
if(![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]){
[self showNoticeMessage:@"您的设备没有摄像头或者相关的驱动, 不能进行直播"];
return NO;
} // 判断是否有摄像头权限
AVAuthorizationStatus authorizationStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
if (authorizationStatus == AVAuthorizationStatusRestricted|| authorizationStatus == AVAuthorizationStatusDenied) {
[self showNoticeMessage:@"app需要访问您的摄像头。\n请启用摄像头-设置/隐私/摄像头"];
return NO;
} // 开启麦克风权限
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
if ([audioSession respondsToSelector:@selector(requestRecordPermission:)]) {
[audioSession performSelector:@selector(requestRecordPermission:) withObject:^(BOOL granted) {
if (granted) {
return YES;
} else {
[self showNoticeMessage:@"app需要访问您的麦克风。\n请启用麦克风-设置/隐私/麦克风"];
return NO;
}
}];
}

3.直播使用的第三方:

视频播放:IJKMediaFramework

弹幕:BarrageRenderer

推流:LFLiveKit

源码学习: https://github.com/SunLiner/MiaowShow

4.Cell中的倒计时:

/// 每秒执行一次
- (void)countDownWithPER_SECBlock:(void (^)())PER_SECBlock { if (_timer==nil) {
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, );
_timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, , ,queue);
dispatch_source_set_timer(_timer,dispatch_walltime(NULL, ),1.0*NSEC_PER_SEC, ); //每秒执行
dispatch_source_set_event_handler(_timer, ^{
dispatch_async(dispatch_get_main_queue(), ^{
PER_SECBlock();
});
});
dispatch_resume(_timer);
}
}

5.搜索时设置“搜索高亮”:

 // 设置搜索高亮
if (model.searchKeyWord.length > ) {
// 从全部文字中找到特殊的文字
NSRange range = [model.titleStr rangeOfString:model.searchKeyWord];
if (range.location != NSNotFound && range.length > ) {
NSMutableAttributedString *muAttStr = [[NSMutableAttributedString alloc] initWithString:model.titleStr];
[muAttStr addAttribute:NSForegroundColorAttributeName value:BLUE_COLOR range:range];
self.titleLabel.attributedText = muAttStr;
} }

iOS知识点总结的更多相关文章

  1. IOS学习笔记48--一些常见的IOS知识点+面试题

      IOS学习笔记48--一些常见的IOS知识点+面试题   1.堆和栈什么区别? 答:管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制:对于堆来说,释放工作由程序员控制,容易产生memor ...

  2. iOS 知识点梳理

    OC的理解与特性 OC作为一门面向对象的语言,自然具有面向对象的语言特性:封装.继承.多态.它既具有静态语言的特性(如C++),又有动态语言的效率(动态绑定.动态加载等).总体来讲,OC确实是一门不错 ...

  3. ios知识点

    在controller中加载plist数据 1,设置属性NSArray 或可变数组NSMutableArray @property(nonatomic,strong)NSArray *message; ...

  4. iOS知识点全梳理-备用

    感谢大神分享 文/Jack_lin(简书作者)原文链接:http://www.jianshu.com/p/5d2163640e26著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 序言 ...

  5. iOS 知识点

    1. @dynamic.@synthesize 2. iOS NSTimer 3. iOS 之 Aggregate Target 4. iOS 属性之assign.copy.retain 5. iOS ...

  6. iOS知识点集合--更改(2)

    3.nsmutablearray *a 如果直接赋值 a = @[@"d",@""]; 这个时候a 是不可变的 字典也是如此 2.如果接口调用错误的话 打印re ...

  7. iOS知识点、面试题 之三

    最近面试,发现这些题 还不错,与大家分享一下,分三文给大家: 当然Xcode新版本区别,以及iOS新特性 Xcode8 和iOS 10 在之前文章有发过,感兴趣的可以查阅: http://www.cn ...

  8. iOS知识点、面试题 之二

    最近面试,与大家分享一下,分三文给大家: 当然Xcode新版本区别,以及iOS新特性 Xcode8 和iOS 10 在之前文章有发过,感兴趣的可以查阅: http://www.cnblogs.com/ ...

  9. ios知识点总结——UITableView的展开与收缩及横向Table

    UITableVIew是iOS开发中使用最为广泛的一种控件,对于UITableView的基本用法本文不做探讨,本文主要是针对UITableView的展开与收缩进行阐述,在文章的后面也会探讨一下横向ta ...

  10. IOS知识点收集

    17  duplicate symbols for architecture armv7s 用cocoapods 的时候出现,这种错误一般是由重复引用库文件引起. 原因:自己尝试添加Reachabil ...

随机推荐

  1. win10锁屏壁纸文件夹Assets中无文件问题的解决方法

    一.前言 win10在锁屏时会有很多精美的壁纸,在网上查找到win10锁屏壁纸存放目录为 : C:\Users\你的用户名\AppData\Local\Packages\Microsoft.Windo ...

  2. 1121 Django基本

    目录 Django前戏 一.课程导读 1.web应用 2.c/s b/s 架构 3.Python Web框架 二.原生socket服务 三.http协议 什么是http协议 四大特性 http工作原理 ...

  3. 09—mybatis注解配置join查询

    今天来聊mybatis的join查询,怎么说呢,有的时候,join查询确实能提升查询效率,今天举个left join的例子,来看看mybatis的join查询. 就不写的很细了,把主要代码贴出来了. ...

  4. BZOJ 4008 亚瑟王(概率DP 奥妙重重)

    题意 中文题面,就不解释了 分析 显然这道题直接求期望太麻烦,想想转化问题(这转化太神了). 定义f(i,j)f(i,j)f(i,j)表示第iii张卡总共被经过jjj次的概率,有转移方程式 f(i,j ...

  5. Educational Codeforces Round 67 (Rated for Div. 2) B题【前缀+二分】【补题ING系列】

    题意:给出一个字符串s, 可以从左往右拿走s的字符, 至少要到s的第几个位置才能拼成t 思路:用二维数组记录前缀,然后二分即可. #include<bits/stdc++.h> using ...

  6. Flutter 踩坑集

    1.Flutter Packages Get 一直重试或一直失败的问题 翻车原因:万恶之源-----天朝的长城防火墙 解决方法 详见:https://flutter.dev/community/chi ...

  7. 查看文件被哪个进程lock住

    How do you know who or what is locking a remote file? http://serverfault.com/questions/1948/how-do-y ...

  8. HDU 1074 Doing Homework ——(状态压缩DP)

    考虑到n只有15,那么状压DP即可. 题目要求说输出字典序最小的答案的顺序,又考虑到题目给出的字符串本身字典序是递增的,那么枚举i的时候倒着来即可.因为在同样完成的情况下,后选字典序大的,小的字典序就 ...

  9. 编写第一个Servlet程序

    在开始这一节之前呢,我们还需要把Tomcat配置到Eclipse中,配置的方式很简单,打开Eclipse,Window,Preferences,进入到这个页面 将Tomcat的安装目录配置到Eclip ...

  10. yum install 报错

    把python2升级到python3以后,yum报错: [root@localhost Python-]# yum install openssl File except KeyboardInterr ...