3

我有一个应用程序,我在 instagram 上共享图像,它工作得很好。

如屏幕截图所示。当我按下 Instagram 上的按钮分享时,它会在 UIActivityviewcontroller 中打开。

如果我点击 Instagram 上的分享,是否有可能直接将我带到本机 instagram 应用程序?

如果用户在他的设备中安装了其他应用程序,则该应用程序也会因为 UIActivityViewController 而显示。

我不想让 UIActivityviewcontroller 说“在 Instagram 中打开”。

提前致谢。

在此处输入图像描述

已编辑

我正在拍摄一个视图的屏幕截图并在 Instagram 上分享该屏幕截图。

当我单击一个按钮共享时,它会打开,如我不想要的屏幕截图所示。

我正在使用下面的代码。

NSURL *instagramURL = [NSURL URLWithString:@"instagram://"];

                if ([[UIApplication sharedApplication] canOpenURL:instagramURL])
                {
                    CGRect rect = CGRectMake(0 ,0 , 0, 0);
                    UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.opaque, 0.0);
                    [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];

                    UIGraphicsEndImageContext();
                    NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
                    NSString* documentsDirectory = [paths objectAtIndex:0];

                    imagename=[NSString stringWithFormat:@"ff.ig"];
                    NSString* fullPathToFile = [documentsDirectory stringByAppendingPathComponent:imagename];
                    ////NSLog(@"%@",fullPathToFile);

                    igImageHookFile = [[NSURL alloc] initWithString:[[NSString alloc] initWithFormat:@"file://%@", fullPathToFile]];

                    self.dic.UTI = @"com.instagram.photo";
                    self.dic = [self setupControllerWithURL:igImageHookFile usingDelegate:self];
                    self.dic=[UIDocumentInteractionController interactionControllerWithURL:igImageHookFile];


                        self.dic.annotation = [NSDictionary dictionaryWithObject:@"Image" forKey:@"InstagramCaption"];

     [self.dic presentOpenInMenuFromRect: rect    inView:self.view animated: YES ];
  }
4

3 回答 3

3

为了迅速

 var instagramURL = NSURL(string: "instagram://app")!
        if UIApplication.sharedApplication().canOpenURL(instagramURL) {
            var documentDirectory = NSHomeDirectory().stringByAppendingPathComponent("Documents")
            var saveImagePath = documentDirectory.stringByAppendingPathComponent("Image.igo")
            var imageData = UIImagePNGRepresentation(self.bestScoreShareView.takeSnapshot(W: 640, H: 640))
            imageData.writeToFile(saveImagePath, atomically: true)
            var imageURL = NSURL.fileURLWithPath(saveImagePath)!
           docController  = UIDocumentInteractionController()
            docController.delegate = self
            docController.UTI = "com.instagram.exclusivegram"
            docController.URL = imageURL
            docController.presentOpenInMenuFromRect(CGRectZero, inView: self.view, animated: true)

        } else {
            println("instagram not found")
        }

从 uiview 获取 shapshot 的扩展

extension UIView {
    func takeSnapshot(#W: CGFloat, H: CGFloat) -> UIImage {
        var cropRect = CGRectMake(0, 0, 600, 600)
        UIGraphicsBeginImageContextWithOptions(bounds.size, false, UIScreen.mainScreen().scale)
        drawViewHierarchyInRect(self.bounds, afterScreenUpdates: true)
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        image.imageWithNewSize(CGSizeMake(W, H))
        return image
    }
}

设置图像大小的扩展

extension UIImage {
     func imageWithNewSize(newSize:CGSize) ->UIImage {
        UIGraphicsBeginImageContext(newSize)
        self.drawInRect(CGRectMake(0, 0, newSize.width, newSize.height))

        let newImage = UIGraphicsGetImageFromCurrentImageContext();

        UIGraphicsEndImageContext();
        return newImage
    }
}
于 2015-05-04T10:58:16.903 回答
1
self.documentInteractionController = [self setupControllerWithURL:imgurl usingDelegate:self];

self.documentInteractionController=[UIDocumentInteractionController  interactionControllerWithURL:imgurl];

self.documentInteractionController.UTI = @"com.instagram.exclusivegram";

以相同的顺序使用此代码。这里 documentInteractionController 是 UIDocumentInteractionController 的对象。仅供您了解。您只会在“打开方式”窗口中获得 Instagram。

使用 igo 扩展而不是 ig 保存您的图像。

这样,您只会在“打开方式”菜单中获得 Instagram 选项。

或者,如果您想在按下按钮时直接打开 instagram,您可以传递应用程序的直接 url,它将引导您进入本机 instagram 应用程序。

希望它可以帮助你。

于 2013-08-09T07:09:38.413 回答
0

你检查过你的图片大小吗?因为它支持大于 612*612 的图片,所以请检查你发布的图片的大小

于 2013-07-30T12:17:13.750 回答