《iOS 6高级开发手册(第4版)》——2.6节秘诀:添加QuickLook动作
本节书摘来自异步社区《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
关注公众号
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
《Cisco IOS XR技术精要》一2.3 进程间通信
本节书摘来自异步社区《Cisco IOS XR技术精要》一书中的第2章,第2.3节,作者 【美】Mobeen Tahir , Mark Ghattas , Dawit Birhanu , Syed Natif Nawaz,更多章节内容可以访问云栖社区“异步社区”公众号查看 2.3 进程间通信 Cisco IOS XR技术精要对于分布式系统来说,具有一种健壮的IPC机制是至关重要的。在使用IOS XR的高度模块化、大型分布式系统中,可靠、高效IPC机制的重要性就更为突出了。IOS XR根据不同用途及需求开发了多种IPC机制。本节将讨论IOS XR中使用的一些常见IPC进程。 2.3.1 IPC机制特点 这部分讨论了IPC机制的主要特点,以及不同IPC机制之间的异同。 1.同步与异步如果使用同步通信,发送线程将会在消息被接收线程处理之前被阻断。由微内核提供的基本IPC机制便是同步IPC的一个例子。使用同步IPC,发送方一次仅发送一条消息,这是因为发送方在发送另一消息之前,必须等待接收方将上一消息处理完。尽管这一机制可能会限制吞吐量性能,但其优势是发送方无法超出接收方的吞吐能力。图2-5给出...
-
下一篇
《深入解析Android 虚拟机》——第2章,第2.6节Java内存模型
本节书摘来自异步社区《深入解析Android 虚拟机》一书中的第2章,第2.6节Java内存模型,作者 钟世礼,更多章节内容可以访问云栖社区“异步社区”公众号查看 2.6 Java内存模型不同的平台,内存模型是不一样的,但是JVM的内存模型规范是统一的。其实Java的多线程并发问题最终都会反映在Java内存模型上,所谓线程安全无非是要控制多个线程对某个资源的有序访问或修改。总结Java的内存模型,要解决两个主要的问题:可见性和有序性。 人们都知道计算机有高速缓存的存在,处理器并不是每次处理数据都是取内存的。JVM定义了自己的内存模型,屏蔽了底层平台内存管理细节,对于Java开发人员,要清楚在JVM内存模型的基础上,如果解决多线程的可见性和有序性。 那么,何谓可见性?多个线程之间是不能互相传递数据通信的,它们之间的沟通只能通过共享变量来进行。Java内存模型(JMM)规定了JVM有主内存,主内存是多个线程共享的。当新建一个对象的时候,也是被分配在主内存中,每个线程都有自己的工作内存,工作内存存储了主存的某些对象的副本,当然线程的工作内存大小是有限制的。当线程操作某个对象时,执行顺序如下。...
相关文章
文章评论
共有0条评论来说两句吧...

微信收款码
支付宝收款码