ios - 如何在 iOS 中创建自定义 UIActivity?

标签 ios objective-c uiactivityviewcontroller uiactivity

如何在 iOS 中创建自定义 UIActivity

我想要这个的原因是在我的一个应用程序中添加一个评论应用程序按钮,将用户带到 App Store 的评论部分。如何创建这样的自定义 UIActivity

最佳答案

首先,创建文件。我选择命名我的 ActivityViewCustomActivity

使 ActivityViewCustomActivity.h 看起来像这样:

#import <UIKit/UIKit.h>

@interface ActivityViewCustomActivity : UIActivity

@end

使 ActivityViewCustomActivity.m 看起来像这样:

#import "ActivityViewCustomActivity.h"

@implementation ActivityViewCustomActivity

- (NSString *)activityType
{
    return @"yourappname.Review.App";
}

- (NSString *)activityTitle
{
    return @"Review App";
}

- (UIImage *)activityImage
{  
    // Note: These images need to have a transparent background and I recommend these sizes:
    // iPadShare@2x should be 126 px, iPadShare should be 53 px, iPhoneShare@2x should be 100 
    // px, and iPhoneShare should be 50 px. I found these sizes to work for what I was making.

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    {
        return [UIImage imageNamed:@"iPadShare.png"];
    }
    else
    {
        return [UIImage imageNamed:@"iPhoneShare.png"];
    }
}

- (BOOL)canPerformWithActivityItems:(NSArray *)activityItems
{
    NSLog(@"%s", __FUNCTION__);
    return YES;
}

- (void)prepareWithActivityItems:(NSArray *)activityItems
{
    NSLog(@"%s",__FUNCTION__);
}

- (UIViewController *)activityViewController
{
    NSLog(@"%s",__FUNCTION__);
    return nil;
}

- (void)performActivity
{   
    // This is where you can do anything you want, and is the whole reason for creating a custom 
    // UIActivity

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=yourappid"]];
    [self activityDidFinish:YES];
}

@end

这是我的图像的样子: 这是我制作的 .PSD: -- 删除了恶意链接 -- 这是原始的 250 px .p​​ng http://i.imgur.com/pGWVj.png

现在在您的 View Controller 中执行以下操作:

#import "ActivityViewCustomActivity.h"

现在无论您想在哪里显示 UIActivityViewController:

   NSString *textItem = @"Check out the yourAppNameHere app: itunes http link to your app here";
   UIImage *imageToShare = [UIImage imageNamed:@"anyImage.png"];

   NSArray *items = [NSArray arrayWithObjects:textItem,imageToShare,nil];

   ActivityViewCustomActivity *aVCA = [[ActivityViewCustomActivity alloc]init];

   UIActivityViewController *activityVC =
   [[UIActivityViewController alloc] initWithActivityItems:items
                                                  applicationActivities:[NSArray arrayWithObject:aVCA]];

   activityVC.excludedActivityTypes = @[UIActivityTypePostToWeibo, UIActivityTypeAssignToContact, UIActivityTypePrint, UIActivityTypeCopyToPasteboard, UIActivityTypeSaveToCameraRoll];

   activityVC.completionHandler = ^(NSString *activityType, BOOL completed)
   {
        NSLog(@"ActivityType: %@", activityType);
        NSLog(@"Completed: %i", completed);
   };

   if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
   {
      self.popoverController = [[UIPopoverController alloc] initWithContentViewController:activityVC];

      CGRect rect = [[UIScreen mainScreen] bounds];

      [self.popoverController
                     presentPopoverFromRect:rect inView:self.view
                     permittedArrowDirections:0
                     animated:YES];
   }
   else
   {
       [self presentViewController:activityVC animated:YES completion:nil];
   }

关于ios - 如何在 iOS 中创建自定义 UIActivity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12766300/

相关文章:

ios - 截断 NSAttributedString 中的部分字符串

ios - UIKit Dynamics 通过碰撞更改 View 框架

ios - 如何知道另一个线程是否正在访问资源?

ios - UIActivityViewController 自动关闭

c++ - # 包含在 xcode 中找不到的 <cstddef> 文件

ios - 如何更改 UILabel 中字符类型(而非字符串)的颜色?

ios - Mac Catalyst 的替代 UIActivityViewController 保存对话框或 UIDocumentPickerViewController 抛出错误代码 260 的解决方案

objective-c - AppDelegate 在启动时最后实例化

IOS13 : UIActivityViewController. 选择保存照片后未调用completionWithItemsHandler

ios - XCUITest 和 UIActivityViewController