Light's Blog

The best or nothing.

iOS知识小集-170320

| Comments

iOS系统分享

需增加版本判断:UIActivityTypeOpenInIBooksiOS 9.0之后才有。

iOS导出音乐

如何导出mp3:先按mov格式导出,再转为mp3。
如何包含metadata信息:m4a格式自动包含metadata信息,mp3无。
路径去除特殊字符。

iOS知识小集-170313

| Comments

Masonry

需要先添加到父视图,再设置约束。
block中无需使用weakself。
添加约束:makeConstrains。
更新约束:updateConstrains,与之相关的布局自动调整。
重设约束:remakeConstrains,删除之前的约束重新添加。

[self.view updateConstraints:^(MASConstraintMaker *make){
  //  updateConstraints
}];
[self.view updateConstraints];
[self.view setNeedsLayout];
[UIView animateWithDuration:3 animations:^{
  [self.view layoutIfNeeded];
}];

iOS知识小集-170227

| Comments

OC中的锁

1
2
3
4
5
6
7
8
9
10
@implementation TestObj

-(void)method1{
  NSLog(@"Method1");
}
-(void)method2{
  NSLog(@"Method2");
}

@end

iOS知识小集-170220

| Comments

App生命周期

main.m:app程序入口,将控制权交给UIKit framework。
UIApplication:管理事件循环和高级行为,传递通知给代理。
App Delegate:处理应用初始化,状态转换,等高级行为。每个应用都要有。
Data Model:存储应用数据。
View Controller:管理应用展示内容。
View:展示内容。
Main Run Loop:Main run loop由UIApplication在主线程中开启,保证用户操作串行执行。 用户操作 -> 操作系统 -> 端口 -> 事件队列 -> Main run loop -> App object -> Core object -> 操作系统 -> 屏幕反馈。
执行状态
- 关闭状态。
- 未激活状态:在前台运行,但未接收到事件。
- 激活状态:在前台运行,接收到事件。
- 后台状态:在后台,且正在执行程序,通常会接着进入挂起状态。
- 挂起状态:在后台,且没有执行程序。当内存不足时会清理挂起应用。

iOS System Authorization

| Comments

iOS 10开始,获取隐私敏感数据需要在plist.info文件中配置,否则app会crash。
配置方法:添加对应权限的key和value,value不许为空。
常用权限:

  • Network:无需添加key
  • Location:Privacy - Location Always Usage Description
  • Photo:Privacy - Photo Library Usage Description
  • Camera:Privacy - Camera Usage Description
  • Microphone:Privacy - Microphone Usage Description
  • Contact:Privacy - Contacts Usage Description
  • Media:Privacy - Media Library Usage Description

手动请求权限:当用户拒绝授权某权限时,需要手动再次请求。
跳转至权限设置界面:

1
2
3
4
[[UIApplication sharedApplication]
                openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]
                options:@{}
      completionHandler:nil];

Demo地址

Prevent Duplicate Clicks

| Comments

在应用开发过程中,点击事件为耗时操作或者延时响应,例如请求服务器数据,push至下一个界面,如果不处理用户重复点击事件,将会重复触发事件。下面介绍几种简单的处理方法。