< UIKit >

UIActivity.h

2019-01-25  本文已影响8人  zhYx_

#if USE_UIKIT_PUBLIC_HEADERS || !__has_include(<UIKitCore/UIActivity.h>)
//
//  UIActivity.h
//  UIKit
//
//  Copyright 2012-2018 Apple Inc. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKitDefines.h>
NS_ASSUME_NONNULL_BEGIN





@class UIImage, UIViewController;

/* 活动类型 <枚举> */
#if UIKIT_STRING_ENUMS
typedef NSString * UIActivityType NS_TYPED_EXTENSIBLE_ENUM;
#else
typedef NSString * UIActivityType;
#endif
UIKIT_EXTERN UIActivityType const UIActivityTypePostToFacebook     NS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED;// 分享到脸书
UIKIT_EXTERN UIActivityType const UIActivityTypePostToTwitter      NS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED;// 分享到推特
UIKIT_EXTERN UIActivityType const UIActivityTypePostToWeibo        NS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED;// 分享到新浪微博
UIKIT_EXTERN UIActivityType const UIActivityTypeMessage            NS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED;// 发送信息
UIKIT_EXTERN UIActivityType const UIActivityTypeMail               NS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED;// 发送邮件
UIKIT_EXTERN UIActivityType const UIActivityTypePrint              NS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED;// 打印
UIKIT_EXTERN UIActivityType const UIActivityTypeCopyToPasteboard   NS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED;// 复制
UIKIT_EXTERN UIActivityType const UIActivityTypeAssignToContact    NS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED;// 添加到通讯录
UIKIT_EXTERN UIActivityType const UIActivityTypeSaveToCameraRoll   NS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED;// 储存到相册
UIKIT_EXTERN UIActivityType const UIActivityTypeAddToReadingList   NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED;// 添加到阅读书签
UIKIT_EXTERN UIActivityType const UIActivityTypePostToFlickr       NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED;// 分享到Flickr
UIKIT_EXTERN UIActivityType const UIActivityTypePostToVimeo        NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED;// 分享到Vimeo
UIKIT_EXTERN UIActivityType const UIActivityTypePostToTencentWeibo NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED;// 分享到腾讯微博
UIKIT_EXTERN UIActivityType const UIActivityTypeAirDrop            NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED;// 发送隔空投送
UIKIT_EXTERN UIActivityType const UIActivityTypeOpenInIBooks       NS_AVAILABLE_IOS(9_0) __TVOS_PROHIBITED;// 添加到IBooks
UIKIT_EXTERN UIActivityType const UIActivityTypeMarkupAsPDF        NS_AVAILABLE_IOS(11_0) __TVOS_PROHIBITED;// 标记成PDF

/* 行为分类 <枚举> */
typedef NS_ENUM(NSInteger, UIActivityCategory) {
    UIActivityCategoryAction,   // 行为(在最下边一行展示,如复制/粘贴/打印)
    UIActivityCategoryShare,    // 分享(在隔空投送下边一行展示,如分享到微博/脸书,发送信息/邮件)
} NS_ENUM_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED;





#pragma mark - 活动 Class
#pragma mark -
/*
 - UIActivity
    分享控制器的活动事件类(自带一些标准事件);一般用法为继承它,自定义一些分享事件
 - 概述:
    UIActivity需要与UIActivityViewController一起使用
    系统标准的UIActivity:标准活动视图控制器支持通过电子邮件发送数据,将项目发布到用户的某个社交媒体帐户等
    自定义UIActivity:同时获取用户需要传递的行为或数据,对该数据执行某些操作,并返回结果(例如:社交媒体服务可以采用向其提供的任何文本/图像或其他内容并将它们发布到社交帐户)
 - 方法使用:
    如果-canPerformWithActivityItems:返回YES,则活动的UIActivityViewController对象会向用户显示此分享窗口.
    用户点击某个行为时,UIActivityViewController调用对应行为的-prepareWithActivityItems:方法
    然后只调用以下方法之一:
        1.没有视图控制器执行 -performActivity (需手动执行与该服务关联的任务并显示)
        2.有视图控制器执行 -activityViewController (不需要手动弹出,在收集所需的输入后,会自动启动与服务关联的任务)
 */
NS_CLASS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED @interface UIActivity : NSObject
// 活动整体分类类型(默认:UIActivityCategoryAction)
#if UIKIT_DEFINE_AS_PROPERTIES
@property(class, nonatomic, readonly) UIActivityCategory activityCategory NS_AVAILABLE_IOS(7_0);
#else
+ (UIActivityCategory)activityCategory NS_AVAILABLE_IOS(7_0);
#endif

#if UIKIT_DEFINE_AS_PROPERTIES
// 具体活动类型(默认:nil)
@property(nonatomic, readonly, nullable) UIActivityType activityType;
// UIActivity按钮的标题(默认:nil)
@property(nonatomic, readonly, nullable) NSString *activityTitle;
// UIActivity按钮的图片(默认:nil)
@property(nonatomic, readonly, nullable) UIImage *activityImage;
#else
- (nullable UIActivityType)activityType;
- (nullable NSString *)activityTitle;
- (nullable UIImage *)activityImage;
#endif

/**
 能否执行一组行为(默认:NO)

 @param activityItems 要执行的行为项
 @return 是/否
 */
- (BOOL)canPerformWithActivityItems:(NSArray *)activityItems;
/**
 准备执行一组行为(默认:不做任何事)

 @param activityItems 要执行的行为项
 */
- (void)prepareWithActivityItems:(NSArray *)activityItems;

// 获取行为视图控制器(非空)
#if UIKIT_DEFINE_AS_PROPERTIES
@property(nonatomic, readonly, nullable) UIViewController *activityViewController;
#else
- (nullable UIViewController *)activityViewController;
#endif

/**
 开始执行行为(如果没有视图控制器,则调用此方法.完成后调用-activityDidFinish;默认调用[self activityDidFinish:NO])
 */
- (void)performActivity;
/**
 行为是否结束(行为结束时自动调用此方法)

 @param completed 是/否
 */
- (void)activityDidFinish:(BOOL)completed;
@end





NS_ASSUME_NONNULL_END
#else
#import <UIKitCore/UIActivity.h>
#endif
上一篇下一篇

猜你喜欢

热点阅读