首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift中要共享到Instagram故事的图像周围的水印/边框

Swift中要共享到Instagram故事的图像周围的水印/边框
EN

Stack Overflow用户
提问于 2020-05-26 16:06:03
回答 1查看 140关注 0票数 0

我有以下功能,可以在将图片分享到instagram故事时正常工作

代码语言:javascript
复制
private func shareToInstagramStories() {
guard let imagePNGData = UIImage(data: imageData!)?.pngData() else { return }
guard let instagramStoryUrl = URL(string: "instagram-stories://share") else { return }
guard UIApplication.shared.canOpenURL(instagramStoryUrl) else { return }
let itemsToShare: [[String: Any]] = [["com.instagram.sharedSticker.backgroundImage": imagePNGData]]
let pasteboardOptions: [UIPasteboard.OptionsKey: Any] = [.expirationDate: Date().addingTimeInterval(60 * 5)]
UIPasteboard.general.setItems(itemsToShare, options: pasteboardOptions)
UIApplication.shared.open(instagramStoryUrl, options: [:], completionHandler: nil)
}

我想尝试和做的是能够在带有品牌的图像上放置一个边框/水印。可以在上面的函数中添加这个吗?还是先调用"watermark“函数,然后将结果传递给shareToInstagramStories函数?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-05-26 21:04:33

找出对我有效的方法:

代码语言:javascript
复制
func generateImageWithText() -> UIImage? {
        let image = UIImage(data: imageData!)!

        let imageView = UIImageView(image: image)
        imageView.backgroundColor = UIColor.clear
        imageView.frame = CGRect(x: 0, y: 0, width: image.size.width, height: image.size.height)

        let btnDetail = UIButton(frame: CGRect(x: 0, y: 0, width: image.size.width, height: image.size.height))
        btnDetail.setTitle("watermarkText", for: .normal)
        btnDetail.titleLabel?.font = .systemFont(ofSize: 72)
        btnDetail.titleLabel?.numberOfLines = 5
        btnDetail.titleLabel?.lineBreakMode = .byCharWrapping
        btnDetail.contentVerticalAlignment = .top
        btnDetail.contentHorizontalAlignment = .left
        btnDetail.isUserInteractionEnabled = false
        btnDetail.autoresizesSubviews = true
        btnDetail.autoresizingMask = .flexibleWidth

        UIGraphicsBeginImageContextWithOptions(btnDetail.bounds.size, false, 0)
        imageView.layer.render(in: UIGraphicsGetCurrentContext()!)
        btnDetail.layer.render(in: UIGraphicsGetCurrentContext()!)
        let imageWithText = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()

        return imageWithText
    }

    func shareToInstagramStories() {
        guard let imagePNGData = generateImageWithText()!.pngData() else { return }
          guard let instagramStoryUrl = URL(string: "instagram-stories://share") else { return }
          guard UIApplication.shared.canOpenURL(instagramStoryUrl) else { return }

          let itemsToShare: [[String: Any]] = [["com.instagram.sharedSticker.stickerImage": imagePNGData]]
          let pasteboardOptions: [UIPasteboard.OptionsKey: Any] = [.expirationDate: Date().addingTimeInterval(60 * 5)]
          UIPasteboard.general.setItems(itemsToShare, options: pasteboardOptions)
          UIApplication.shared.open(instagramStoryUrl, options: [:], completionHandler: nil)
      }

我使用isUserInteractionEnabled = false的UIButton,而不是UILabel,因为我希望文本具有一些垂直对齐方式。

希望这能帮助到其他人

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62017351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档