扩展常规UIActivity
iOS 6 引入了UIActivity作为一个可继承的类。
为了创建自定义活动,程序员必须重写以下内容
- (NSString *)activityType;
- (NSString *)activityTitle;
- (UIImage *)activityImage;
- (BOOL)canPerformWithActivityItems:(NSArray *)activityItems;
- (void)prepareWithActivityItems:(NSArray *)activityItems;
以及以下其中一个
- (UIViewController *)activityViewController;
- (void)performActivity;
扩展ZYActivity
扩展UIActivity不是最便捷的方法。通过从这个类继承,你会发现activityType会被处理,并且活动项的存储和动作的执行是一步到位的,所以现在你不再需要重写prepareWithActivityItems:、performActivity和activityViewController,你只需要重写performWithActivityItems:
如果你不想显示一个UIViewController,你可以在performWithActivityItems:简单返回nil。
因此,现在只需要重写以下内容
- (NSString *)activityTitle;
- (UIImage *)activityImage;
- (BOOL)canPerformWithActivityItems:(NSArray *)activityItems;
- (UIViewController *)performWithActivityItems:(NSArray *)activityItems;
静默活动示例 - 源代码
- (UIViewController *)performWithActivityItems:(NSArray *)activityItems {
NSOperationQueue *backgroundQueue =
[[NSOperationQueue alloc] init];
[backgroundQueue addOperationWithBlock:^{
NSLog(@"My activity has begun!", nil);
sleep(3);
NSLog(@"My activity has finished!", nil);
[self activityDidFinish:YES];
}];
return nil;
}
可见活动示例 - 源代码
- (UIViewController *)performWithActivityItems:(NSArray *)activityItems {
ZYHelloViewController *helloViewController =
[[ZYHelloViewController alloc] initWithNibName:@"ZYHelloViewController"
bundle:nil];
helloViewController.activity = self;
return helloViewController;
}
版权所有 (c) 2012 Mariano Abdala。
本许可协议下,任何人可以免费获得此软件及其相关文档文件(统称为"软件")的副本,用于在不附加限制的情况下处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许提供软件的个人进行此类操作,前提是满足以下条件
上述版权声明和本许可协议应包含在软件的所有副本或主要部分中。
本软件按"原样"提供,不提供任何明示或暗示的保证,包括但不限于适销性、适用于特定目的和非侵权性保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论这些索赔、损害或其他责任是由于合同、侵权或任何其他方式引起的,与软件或其使用或任何其他情况有关。