使用 UIActivityViewController 提供缩略图

2023-12-15

我正在尝试通过以下方式分享带有文本的图像UIActivityViewController。如果我这样做:

        let activityVC = UIActivityViewController(activityItems: [text, image], applicationActivities: nil)
        self.presentViewController(activityVC, animated: true, completion: nil)

一切正常。问题是我只想与某些活动类型共享图像。也就是说,当用户分享到 Facebook 时,我不想拥有图像,但我所做的其他一切都是如此。我的问题是这个愚蠢的方法从未被调用:

optional func activityViewController(_ activityViewController: UIActivityViewController,
       thumbnailImageForActivityType activityType: String?,
                       suggestedSize size: CGSize) -> UIImage?

这应该是因为它定义在UIActivityItemSource协议。有什么解决办法吗?


所以我相信在这里已经取得了一些进展。如果您传递多个值,则变为我们的self实例化时UIActivityViewController您可以在中返回多个值itemForActivityType委托方法。所以如果我这样做:

let activityVC = UIActivityViewController(activityItems: [self, self], applicationActivities: nil)

我可以返回不同的值,如下所示:

func activityViewController(activityViewController: UIActivityViewController, itemForActivityType activityType: String) -> AnyObject? {
    if activityType == UIActivityTypePostToFacebook {
        return ["hello", "world"]
    }
    else {
        return ["goodnight", "moon"]
    }
}

但是,似乎只能返回两个相同类型的值。

现在我的新问题是,如何返回图像和文本?狩猎仍在继续……


为了共享两组不同的内容,您必须创建两个不同的项目源

  1. 我们可以为不同的活动类型设置不同的文本内容。添加MyStringItemSource 类到你的视图控制器

    来源一:

    class MyStringItemSource: NSObject, UIActivityItemSource {
    
    @objc func activityViewControllerPlaceholderItem(activityViewController: UIActivityViewController) -> AnyObject {
        return ""
    }
    
    @objc func activityViewController(activityViewController: UIActivityViewController, itemForActivityType activityType: String) -> AnyObject? {
        //You can pass different text for for diffrent activity type
        if activityType == UIActivityTypePostToFacebook {
            return "String for facebook"
        }else{
            return "String for Other"
        }
      }
    }
    
  2. 我们的要求是为所有活动类型添加图像除了脸书,为此添加MyImageItemSource 类在你的风险投资中。

    来源二:

    class MyImageItemSource: NSObject, UIActivityItemSource {
    
    @objc func activityViewControllerPlaceholderItem(activityViewController: UIActivityViewController) -> AnyObject {
       return ""
    }
    
    
    @objc func activityViewController(activityViewController:  UIActivityViewController, itemForActivityType activityType: String) -> AnyObject? {
      //This one allows us to share image ecxept UIActivityTypePostToFacebook
      if activityType == UIActivityTypePostToFacebook {
         return nil
      }
      let Image: UIImage = UIImage(data: NSData(contentsOfURL: NSURL(string: "https://pbs.twimg.com/profile_images/604644048/sign051.gif")!)!)!
          return Image
      }   
    
    }
    
  3. 现在我们准备好设置UIActivityViewController了,开始吧

    @IBAction func Test(sender: AnyObject) {
    
    let activityVC = UIActivityViewController(activityItems: [MyStringItemSource(),MyImageItemSource()] as [AnyObject], applicationActivities: nil)
    
    //Instead of using rootviewcontroller go with your own way.
    if let window = (UIApplication.sharedApplication().delegate as? AppDelegate)?.window
    {
        window.rootViewController?.presentViewController(activityVC, animated: true, completion: nil)
    }
    }
    

推特共享对话:包含图像和给定文本

enter image description here

FB分享对话:仅包含给定的文本

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 UIActivityViewController 提供缩略图 的相关文章

  • 在 Swift 中有条件导入基于 iOS 版本的框架(如 Speech)?

    有没有办法有条件地导入框架Swift基于运行时 iOS 版本 特别是 我有一个部署目标为的应用程序iOS 8 我想使用新的Apple Speech应用程序中的框架 如果在运行时可用 我知道 available iOS 10 代码部分的指令
  • SwiftUI DisclosureGroup 单独展开每个部分

    我正在使用 Foreach 和 DisclosureGroup 来显示数据 每个部分都可以展开 折叠 然而 它们都在同时扩展 折叠 如何单独展开 折叠每个部分 struct TasksTabView View State private v
  • 在 iOS 上构建 WebRtc

    我按照以下说明成功地在 MAC 上构建了 WebRTC http www webrtc org reference getting started http www webrtc org reference getting started
  • UICollectionViewCell 拖动预览的自定义视图

    我正在尝试实现一项功能 用户可以将一个集合视图单元格拖放到另一个集合视图单元格上 但是 我想完全更改运动中物体的预览 以匹配我的应用程序的视觉隐喻 该项目没有移动 该项目包含的东西正在移动 例如 假设我的collectionview单元格显
  • iOS9 Sprite 套件问题

    一切都很顺利 直到我升级到 xCode 7 和 iOS 9 我当前的项目是一个 2D 平台游戏 自从升级以来 我就陷入了我们许多人似乎都面临的精灵套件错误 错误的困扰 我的问题是 每次游戏在模拟器或设备上运行时 所有精灵的 zPositio
  • 如何在 iOS 中创建多行表格单元格?

    如何让第二个单元格扩展以适合文本而不是缩放文本 iOS 中有内置的方法可以做到这一点 还是我必须想出一些自制的解决方案 如果您查看 iOS 联系人应用程序 会发现有一个类似地址的框 但我找不到如何实现这一点 对于任何希望将来实现这一目标的人
  • 每次打开应用程序时,FileManager 的路径 URL 都不同[重复]

    这个问题在这里已经有答案了 我想在fileManager根路径中创建一个文件夹 但在创建之前 我想检查该文件夹是否存在 如果不存在 我将创建 否则将保留它 这是我使用的功能 public func isDirectoryExist path
  • 核心数据executeFetchRequest消耗大量内存

    我正在核心数据数据库中插入 cca 100 000 条记录 数据库包含 3 个实体 球员 俱乐部 球员俱乐部 实体之间存在关系 玩家 gt 玩家俱乐部俱乐部 在 PlayerClub 中插入时 我注意到插入大约 50 000 条记录后会消耗
  • ios GPUImage,小尺寸图像处理效果不好?

    我正在尝试为 OCR 准备图像 我使用 GPUImage 来完成 代码工作正常 直到我裁剪图像 裁剪后我得到了糟糕的结果 作物面积 https www dropbox com s e3mlp25sl6m55yk IMG 0709 PNG h
  • 将时间舍入到最接近的三十秒

    我有一个应用程序 它显示每 30 秒过期的数据 准确地说 在 h m s 11 30 00 11 30 30 11 31 00 等 我可以获得当前时间 但我不确定如何计算现在到最近的三十秒之间的时间 我发现的所有内容都是 Objective
  • iOS9 Swift 文件使用 NSURL 创建 NSFileManager.createDirectoryAtPath

    在iOS9之前 我们创建了一个像这样的目录 let documentsPath NSSearchPathForDirectoriesInDomains DocumentDirectory UserDomainMask true 0 as S
  • iOS UITableView:使用 CAGradientLayer 将背景颜色指定为渐变

    我刚刚开始使用 Xcode 4 3 中的主从视图模板 我试图更改主视图的背景颜色并将其设置为颜色渐变 这是我尝试过的 Colors m import Colors h implementation Colors UIColor naviga
  • 如何获得 UICollectionView 的矩形

    我想在 UICollectionView 中找到节标题的框架 我对 UITableView 也有类似的情况 为此 我能够通过执行以下操作来获得其正确性 CGRect rect self tableView rectForHeaderInSe
  • 如何在 Swift 中使用函数数组

    我已经阅读了我可以在这里找到的所有关于函数数组的帖子 太棒了 你能做到 我估计 但没有一篇文章实际上展示了如何使用它们 至少不是我想要做的 这就是我想要的 它们都可以采用相同的参数 但这不是必需的 这篇文章很接近 将允许我循环执行每个函数
  • AST 文件格式错误或损坏

    我有一个问题 我不知道为什么会发生这种情况 但很可能是因为我错误地按了 移动到垃圾箱 到某些系统框架 我收到一条错误消息 AST 文件格式错误或损坏 找不到 AST 文件引用的文件 Users username myProject Quar
  • 在 for 循环中为元组赋值

    struct MIDIPacket 中有一个 UInt8 的元组 正常的赋值是这样的 import CoreMIDI let packet MIDIPacket packet data 0 0x02 packet data 1 0x5f 等
  • watchOS 2 上的最大内存使用量?

    我没有找到任何有关 watchOS 2 中应用程序可用内存使用的信息 我目前正在为 watchOS 开发一个应用程序 并且在手表端使用 Core Data 当我将 189 个对象中的 166 个加载到数组时 应用程序崩溃 此时的内存使用量为
  • 为什么我收到 com.facebook.sdk.login 错误 308?

    我正在使用 Xcode 7 0 在 iOS 9 0 2 上进行测试并使用 Facebook SDK 4 7 0 当我登录用户时 大多数时候一切都正常 但有时我不断收到此错误 但我不知道为什么 操作无法完成 com facebook sdk
  • Xcode 中的 Prefix.pch 文件是什么?

    许多开发人员正在向其中添加各种方便的宏Prefix pch 但我的问题是那是什么Prefix pch file 如果我删除它Prefix pch来自我的文件Xcode 那么我的应用程序会运行吗 或者会显示什么错误吗 或者它会在构建过程中崩溃
  • 初始化Object中的空字符串?

    有人使用以下方法来初始化 NSstring NSString astring NSString alloc init 我想知道为什么不直接使用 NSString atring nil or NSString astring 没有semant

随机推荐

  • MySQL 查询使用 CASE 来 SELECT 多列

    我有以下可以正确运行的查询 SELECT Future enemy type CASE WHEN Future enemy type square THEN Users color ELSE END AS color CASE WHEN F
  • R 将整数更改为三个整数

    我有这个号码 20101213这是该数据的表示2010 Dec 13th我想从该数字中提取年 月和日数字 所以我应该让三个变量包含这些值 我尝试过的 value 20101213 as numeric strsplit as charact
  • 如何禁用 Angular JS 中的选项?

    I have ng repeat option
  • Celery period_task 并行运行多次

    我有一些使用 Celery 线程的非常简单的周期代码 它只是打印 Pre 和 Post 并在中间休眠 它改编自这个 StackOverflow 问题 and 这个链接网站 from celery task import task from
  • Powershell:将 xml 更改保存在新的 xml 变量或对象中,保持原始对象不变

    我有一个从中获取的 xml 变量Invoke restmethod 我们称之为 object1 我想创建一个新变量或对象 object2那是一样的 object1但对值进行了一些更改 这是我尝试过的 object2 object1 obje
  • C 中的“向后”条件[重复]

    这个问题在这里已经有答案了 我正在查看一些代码 发现一些奇怪的条件 即 if NULL buf 我想知道这样写条件是否有特殊原因 而不是 if buf NULL 我从头到尾看不出有任何理由这样做 但我不认为这是一个错误 对我来说 似乎他们完
  • 在 Perl 中如何将字符串转换为与自身匹配的正则表达式?

    在 Perl 中如何将字符串转换为与自身匹配的正则表达式 我有一组像这样的字符串 Enter your selection Enter Code Navigate Abandon Copy Exit 我想将它们转换为正则表达式 以便我可以将
  • JavaScript 中不同语法错误的不同行为

    我不是 JavaScript 程序员 所以这可能是一个非常基本的问题 问题是当出现一些特定的语法错误时 整个 JS 代码将无法工作 由于 JS 是被解释的 我认为它应该独立执行每一行 直到错误发生 但它似乎没有发生 至少在下面的情况下 co
  • 获取堆栈帧的运行时类型

    我想知道是否可以在堆栈跟踪中获取方法调用者的运行时类型 考虑以下示例 class Parent public void Foo var stack new StackTrace foreach var frame in stack GetF
  • Swift 3:UITextView - 动态高度 - 以编程方式

    我有一个 KeyboardContainer 类 UIView 的子类 以编程方式创建 因此没有故事板 包括一个 UITextView 供用户在其中键入消息 它在聊天日志类中使用 并设置为 inputAccessoryView 我想在用户打
  • 为什么在 ARM 汇编中使用 LDR 而不是 MOV(反之亦然)?

    我正在浏览这个教程 http www cl cam ac uk freshers raspberrypi tutorials os ok01 html 第一道装配线是 ldr r0 0x20200000 第二个是 mov r1 1 我想ld
  • Matplotlib 颜色条移动第二个 x 轴

    我正在尝试使用以下命令将第二个 x 轴添加到绘图的顶部twiny 如果我制作一个没有颜色条的简单散点图 则顶部 x 轴与底部 x 轴正确对齐 MWE 如下 如果我添加一个颜色条 顶部的 x 轴就会发生位移 我怎样才能解决这个问题 MWE i
  • WP7.1应用程序中的WebClient仅调用一次

    我的问题是 我的WebClient使用云中的功能 http 127 0 0 1 81 Service1 svc Data 但不可能多次调用 例如进行更新 这是我的代码 private void button Click object sen
  • 使用 NumberFormatter 类在 php 中将数字转换为单词

    我在解决 php 中的数字到单词函数时遇到困难 我怎样才能将其格式化为 二十九和二十九 请帮忙 首先 29 29 应该怎么读Twenty nine point two nine 话虽如此 如果你需要准确地得到Twenty nine and
  • 如何使用比根更深的 PHP DOM 将新元素添加到 XML?

    我可以在网上找到的所有有关此问题的示例都涉及简单地将内容添加到文档根目录下的 XML 文件中 但我确实需要做的比这更深入 我的 XML 文件很简单 我有
  • 如何处理来自搜索管理器的回调?

    我们假设以下情况 Activity A calls Search Manager User searches and search results are displayed in Activity B User clicks on a l
  • WCF 服务连接问题 - 也许是安全问题?

    我正在尝试调试 WCF 服务 这个客户端以前是可以连接的 现在却无法连接了 该服务被部署到服务器上 我可以使用浏览器访问服务器的服务页面 然后看到生成客户端的说明 我使用 svcutil 重新生成了客户端代理和配置文件 客户端启动 但对服务
  • 删除 VBA 项目引用

    在 VBA 中 我可以看到 PDFCreator 的三个不同参考 其中之一 参见第二张图片 是本地存储的软件版本 并且可以运行 我想使用这个参考 另外两个是对服务器上存储的版本的引用 它们已损坏 现阶段 我无权重新安装或删除它们 我的问题是
  • 如何在 C# 中迭代​​类的实例?

    有没有办法在 C 中迭代 类的实例 这些实例不在集合中进行跟踪或管理 不在常规框架内 你会need手动跟踪它们 但是 您可以在 Windbg sos 中执行此操作 主要用于调试目的 不适用于例程代码
  • 使用 UIActivityViewController 提供缩略图

    我正在尝试通过以下方式分享带有文本的图像UIActivityViewController 如果我这样做 let activityVC UIActivityViewController activityItems text image app