#if USE_UIKIT_PUBLIC_HEADERS || !__has_include(<UIKitCore/UIActivityItemProvider.h>)
//
// UIActivityItemProvider.h
// UIKit
//
// Copyright 2012-2018 Apple Inc. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <CoreGraphics/CoreGraphics.h>
#import <UIKit/UIKitDefines.h>
#import <UIKit/UIActivity.h>
NS_ASSUME_NONNULL_BEGIN
@class UIActivityViewController, UIImage;
///!!!: 活动项目数据源 <协议>
@protocol UIActivityItemSource <NSObject>
@required
// 设置数据类型.只查询返回类型的类.应配合-itemForActivityType:返回数据
- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController;
// 在选择活动后调用以获取数据.可返回nil
- (nullable id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(nullable UIActivityType)activityType;
@optional
// 如果活动支持主题字段。 iOS 7.0
- (NSString *)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(nullable UIActivityType)activityType;
// 如果它是NSData,则为项目的UTI。 iOS 7.0。 将使用nil活动调用,然后选择活动
- (NSString *)activityViewController:(UIActivityViewController *)activityViewController dataTypeIdentifierForActivityType:(nullable UIActivityType)activityType;
// 如果活动支持预览图像。 iOS 7.0
- (nullable UIImage *)activityViewController:(UIActivityViewController *)activityViewController thumbnailImageForActivityType:(nullable UIActivityType)activityType suggestedSize:(CGSize)size;
@end
#pragma mark - 带附件的活动 Class
#pragma mark -
/*
- UIActivityItemProvider
分享控制器的活动事件类(带附件);一般继承它,来实现自定义带附件的活动事件
- 概述
您可以在要使数据可供分享使用的情况下使用提供程序对象,但是您希望延迟提供该数据,直到实际需要它为止。 例如,您可以使用提供程序对象来表示需要先处理的大型视频文件,然后才能将其共享到用户的社交媒体帐户。
初始化UIActivityViewController对象时,除了任何其他数据对象外,还可以传递提供程序对象。 当用户选择活动时,活动视图控制器将您的提供者对象(也是操作对象)添加到操作队列,以便它可以开始收集或处理所需的数据。
您必须实例化UIActivityItemProvider并实现其item方法,该方法被调用以生成项目数据。 您实现此方法而不是您将为操作对象实现的常规main方法。 (main方法在执行操作对象时调用item方法。)item方法的实现应该执行创建和返回数据所需的任何工作。
*/
NS_CLASS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED @interface UIActivityItemProvider : NSOperation <UIActivityItemSource>
/* 实例化 */
- (instancetype)init NS_UNAVAILABLE;
/**
指定初始化方法(placeHolder是-activityViewControllerPlaceholderItem:的返回值)
@param placeholderItem 候选项
@return UIActivityItemProvider
*/
- (instancetype)initWithPlaceholderItem:(id)placeholderItem NS_DESIGNATED_INITIALIZER;
// 获取候选项
@property(nullable,nonatomic,strong,readonly) id placeholderItem;
// 获取活动类型(设置-item是其对应的值,可为nil)
@property(nullable,nonatomic,copy,readonly) UIActivityType activityType;
// 用户选择活动时调用辅助线程.必须初始化并返回一个非零值.可通过UIActivityItemSource协议设置
#if UIKIT_DEFINE_AS_PROPERTIES
@property(nonnull, nonatomic, readonly) id item;
#else
- (nonnull id)item;
#endif
@end
NS_ASSUME_NONNULL_END
#else
#import <UIKitCore/UIActivityItemProvider.h>
#endif
网友评论