美文网首页
iOS 小知识

iOS 小知识

作者: Mossion | 来源:发表于2021-08-05 14:10 被阅读0次

    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!

    相关文章

      网友评论

          本文标题:iOS 小知识

          本文链接:https://www.haomeiwen.com/subject/krxyuttx.html