UIActivityViewController本地图像

时间:2014-09-24 06:01:47

标签: ios imageview uiactivityviewcontroller

如何从imageView共享图像。这是我的imageView代码:

    UIImage *myImage = [UIImage imageNamed:[NSString stringWithFormat:
                                            @"image%d.jpg", i]];
    UIImageView *myImageView = [[UIImageView alloc] initWithImage:myImage];

    [myImageView setFrame:CGRectMake(xOrigin, 0,
                                     self.view.frame.size.width,
                                     self.view.frame.size.height)];

    _postImage.image = myImage;
}

- (IBAction)shareButtonPressed:(id)sender {
NSArray *activityItems;

if (_postImage.image != nil) {
  activityItems = @[_postImage.image];
                    }

 UIActivityViewController *activityVC = [[UIActivityViewController alloc]       
 initWithActivityItems:activityItems                                                                             
  applicationActivities:nil];
  [self presentViewController:activityVC animated:YES completion:nil];
 }

我收到错误 - 没有可用的共享操作。提前谢谢。

2 个答案:

答案 0 :(得分:0)

您可能忘记初始化_postImage。尝试替换:

_postImage.image = myImage;

使用:

_postImage = [[UIImageView alloc] initWithImage:myImage];

答案 1 :(得分:0)

要在activityViewController上获取图像,您需要使用要显示的图像创建自定义活动。以下是使用您的图片创建和显示自定义活动的步骤。

1.创建一个子类化UIActivity的新文件,即" CustomActivity"。然后在CustomActivity.m文件中,您需要记下以下方法。

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

- (NSString *)activityTitle {
return @"Review App";     //title for activity
}

- (UIImage *)activityImage {
    return [UIImage imageNamed:@"Icon.png"];  //image
}

- (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 {
//What your cust activity woudl perform when user tap onto it.
  [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.apple.com/"]];

  [self activityDidFinish:YES];
 }

然后在mainVC中,您可以导入此类并添加以下行以使用此自定义活动。

NSString *textItem = @"provide your string";
UIImage *imageToShare = [UIImage imageNamed:@"Icon.png"];  //Provide your activity image

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

custAct = [[CustomActivity alloc]init];

UIActivityViewController *controller =  [[UIActivityViewController alloc]  initWithActivityItems:items   applicationActivities:@[custAct]];
[self presentViewController:controller animated:YES completion:nil];

现在,您将能够看到包含您要执行的活动的图像。 如果我的理解是错误的,请纠正我。