您现在的位置是:首页 > 文章详情

《iOS 6高级开发手册(第4版)》——2.6节秘诀:添加QuickLook动作

日期:2017-05-01点击:491

本节书摘来自异步社区《iOS 6高级开发手册(第4版)》一书中的第2章,第2.6节秘诀:添加QuickLook动作,作者 【美】Erica Sadun,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.6 秘诀:添加QuickLook动作
iOS 6高级开发手册(第4版)
值得注意的是,QuickLook不存在于系统提供的活动视图控制器所展示的标准动作集中。你可以轻松地添加一个自定义的动作以提供这种特性,从而提供与秘诀2-5创建的相同预览。这就是秘诀2-6所做的工作,它把秘诀2-5的功能包装进一个自定义的QLActivity类中。

秘诀2-6将对符合要求的项目执行比你在本章中已经见过的更彻底的搜索。它将搜索传递给它的项目数组,直至找到一个本地文件URL,它可以将其用于文档预览。如果它没有找到这样一个URL,就会从canPerformWithActivityItems:方法返回NO,并且不会列出在活动控制器上。

秘诀2-6 Quick Look

@implementation QLActivity
{
    NSArray *items;
    NSArray *qlitems;
    QLPreviewController *controller;
}

// Activity Customization
- (NSString *)activityType
{
    return @"CustomQuickLookActivity";
}

- (NSString *) activityTitle
{
    return @"QuickLook";
}
- (UIImage *) activityImage
{
    return [UIImage imageNamed:@"QL.png"];
}
// Items must include at least one file URL
- (BOOL)canPerformWithActivityItems:(NSArray *)activityItems
{
    for (NSObject *item in activityItems)
        if ([item isKindOfClass:[NSURL class]])
        {
            NSURL *url = (NSURL *)item;
            if (url.isFileURL) return YES;
        }
    return NO;
}
// QuickLook callbacks
- (NSInteger) numberOfPreviewItemsInPreviewController:
    (QLPreviewController *) controller
{
    return qlitems.count;
}
- (id <QLPreviewItem>) previewController: (QLPreviewController *)
controller previewItemAtIndex: (NSInteger) index;
{
    return qlitems[index];
}
// Item preparation
- (void)prepareWithActivityItems:(NSArray *)activityItems
{
    items = activityItems;

    controller = [[QLPreviewController alloc] init];
    controller.dataSource = self;
    controller.delegate = self;

    NSMutableArray *finalArray = [NSMutableArray array];

    for (NSObject *item in items)
    {
        if ([item isKindOfClass:[NSURL class]])
        {
            NSURL *url = (NSURL *)item;
            if (url.isFileURL)
            {
                QuickItem *item = [[QuickItem alloc] init];
                item.path = url.path;
                [finalArray addObject:item];
            }
        }
    }
    qlitems = finalArray;
    }

- (void) previewControllerDidDismiss:
(QLPreviewController *)controller
{
    [self activityDidFinish:YES];
}
- (UIViewController *) activityViewController
{
    return controller;
}
@end
原文链接:https://yq.aliyun.com/articles/97579
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章