iOS 小知识
2021-08-05 本文已影响0人
Mossion
1、iOS8 下,tableView要实现左滑删除,必须要实现这个代理方法,哪怕里面什么都没写:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
2、iOS8 下,QLPreviewController 必须实现这个代理方法:
- (CGRect)previewController:(QLPreviewController *)controller frameForPreviewItem:(id <QLPreviewItem>)item inSourceView:(UIView * _Nullable * __nonnull)view
3、将沙盒里文件的路径转NSURL时,应该用这个方法去转换:
+ (NSURL *)fileURLWithPath:(NSString *)path isDirectory:(BOOL)isDir
4、创建一个信号量
/**
创建一个信号量
*/
static dispatch_semaphore_t web_video_source_semaphore() {
static dispatch_semaphore_t web_video_source_semaphore;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
web_video_source_semaphore = dispatch_semaphore_create(0);
});
return web_video_source_semaphore;
}
dispatch_group_t group = dispatch_group_create();
dispatch_group_async(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// TODO:先要执行的代码
.....
dispatch_semaphore_wait(web_video_source_semaphore(), DISPATCH_TIME_FOREVER);
});
dispatch_group_notify(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// TODO:后执行的代码
});
5、 使用 UIGraphicsBeginImageContext 在iPhone 7P以上,会失真。
应该使用 UIGraphicsBeginImageContextWithOptions
6、不能在 viewWillAppear 禁止手势,即
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
如果要禁止手势返回,可以在viewDidAppear里实现上述方法。
7、分享到APP内的文件,存放在DocumentDirectory中的 Inbox/文件夹里面,Inbox/的权限是可读可删除,但是不可用NSFileManager写入文件。
8、CAAnimation,如果设置了代理,一定要写代理方法,不然会导致循环引用,导致控制器或者view无法释放
未完待续。。。
OK!