当前位置: 首页 > news >正文

人气最旺的微信公众号seo优化培训学校

人气最旺的微信公众号,seo优化培训学校,莱芜地板街50一次,网站建设怎么报印花税以前都是用第三方sdk来分享的,最近使用官方的UIActivityViewController来做分享,结果分享图片的时候preview不了分享的图片。 自定义一个继承UIActivityItemProvider的类。关于分享的内容自定义可以自己实现UIActivityItemSource这个协议。首先看看协议的…

以前都是用第三方sdk来分享的,最近使用官方的UIActivityViewController来做分享,结果分享图片的时候preview不了分享的图片。
自定义一个继承UIActivityItemProvider的类。关于分享的内容自定义可以自己实现UIActivityItemSource这个协议。首先看看协议的订阅,当我看到有一个返回thumbimage的接口时候,第一感觉就是它是我需要的。

@protocol UIActivityItemSource <NSObject>@required- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController;	// called to determine data type. only the class of the return type is consulted. it should match what -itemForActivityType: returns later
- (nullable id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(nullable UIActivityType)activityType;	// called to fetch data after an activity is selected. you can return nil.@optional- (NSString *)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(nullable UIActivityType)activityType; // if activity supports a Subject field. iOS 7.0
- (NSString *)activityViewController:(UIActivityViewController *)activityViewController dataTypeIdentifierForActivityType:(nullable UIActivityType)activityType; // UTI for item if it is an NSData. iOS 7.0. will be called with nil activity and then selected activity
- (nullable UIImage *)activityViewController:(UIActivityViewController *)activityViewController thumbnailImageForActivityType:(nullable UIActivityType)activityType suggestedSize:(CGSize)size; // if activity supports preview image. iOS 7.0
- (nullable LPLinkMetadata *)activityViewControllerLinkMetadata:(UIActivityViewController *)activityViewController API_AVAILABLE(ios(13.0)); // called to fetch LinkPresentation metadata for the activity item. iOS 13.0@end

结果测试发现,这个方法再iOS17上根本不触发,应该是iOS13以前就用上面几个,iOS13后就用LPLinkMetadata的方法。LPLinkMetadata中有一个imageProvider,他就是preview的内容。

 public func activityViewControllerLinkMetadata(_ activityViewController: UIActivityViewController) -> LPLinkMetadata? {let metadata = LPLinkMetadata()metadata.title = "My title" // Preview Titlemetadata.originalURL = URL(string: "You sub title here") // Set image metadata.imageProvider = NSItemProvider(object: image)return metadata
}

感觉完成了,但是测试的时候有发现问题了,preview没有铺满那个区域。搜索了一下,发现是图片有alpha透明的区域。对应的处理方法就是去掉透明区域。

extension UIImage {func adjustedForShareSheetPreviewIconProvider() -> UIImage {let replaceTransparencyWithColor = UIColor.black // change as requiredlet minimumSize: CGFloat = 40.0  // pointslet format = UIGraphicsImageRendererFormat.init()format.opaque = trueformat.scale = self.scalelet imageWidth = self.size.widthlet imageHeight = self.size.heightlet imageSmallestDimension = max(imageWidth, imageHeight)let deviceScale = UIScreen.main.scalelet resizeFactor = minimumSize * deviceScale  / (imageSmallestDimension * self.scale)let size = resizeFactor > 1.0? CGSize(width: imageWidth * resizeFactor, height: imageHeight * resizeFactor): self.sizereturn UIGraphicsImageRenderer(size: size, format: format).image { context inlet size = context.format.bounds.sizereplaceTransparencyWithColor.setFill()context.fill(CGRect(x: 0, y: 0, width: size.width, height: size.height))self.draw(in: CGRect(origin: .zero, size: size))}}
}

如果不想处理图片大小的就直接去掉alpha通道

func removingAlpha() -> UIImage {let format = UIGraphicsImageRendererFormat()format.opaque = true // removes Alpha Channelformat.scale = scale // keeps original image scalereturn UIGraphicsImageRenderer(size: size, format: format).image { _ inlet size = context.format.bounds.sizeUIColor.whiteColor.setFill()context.fill(CGRect(x: 0, y: 0, width: size.width, height: size.height))draw(in: CGRect(origin: .zero, size: size))}}

这下就正常了。

Referene:
https://stackoverflow.com/questions/57850483/ios13-share-sheet-how-to-set-preview-thumbnail-when-sharing-uiimage
https://nemecek.be/blog/189/wip-sharing-data-with-uiactivityviewcontroller-tips-tricks

http://www.bjxfkj.com.cn/article/102400.html

相关文章:

  • 哪里网站建设便宜深圳做网站的公司
  • wordpress自定义上传头像seo搜索引擎优化简历
  • 武威市建设局网站 放管服咸阳seo
  • 济南百度网站开发郑州seo
  • 口碑营销为什么越来越重要天津百度seo排名优化
  • 网站建设公司网站源码各网站收录
  • 登陆不了建设银行网站企业网站建设多少钱
  • 网站建设业务方法官方网站百度一下
  • 做网站的原型文件下载怎么做蛋糕
  • 中职电子商务专业就业方向seo关键词排名优化官网
  • 淘宝上买的建设网站能退款吗seo建站的步骤
  • 企业网站重要性潍坊网站建设优化
  • 网站的商桥怎么做网站服务公司
  • 建一个网站需要什么流程河南疫情最新消息
  • 无锡网站 制作百度搜索引擎api
  • 周口建设委员会网站信息平台百度指数专业版价格
  • 12306网站为什么做那么差微信群推广网站
  • 抖音怎么开通小程序推广兰州seo技术优化排名公司
  • 商业网站建设设计百度手机助手下载安装最新版
  • 怎样做化妆品网站宁波网站推广
  • 网后台的网站怎么做百度指数批量获取
  • 做自己的批发网站需要什么营业执照白杨seo教程
  • 怎么给网站绑定域名阿里指数官网
  • 个人网站 摄影展示网络服务商主要包括哪些
  • 云南专业做网站多少钱网站友链
  • 营销网站建设的价格友情链接交换系统
  • 专业网站开发设计网络营销推广方案3篇
  • 开发高端网站开发搜索引擎优化方法
  • 嘉兴网站建设兼职微信scrm系统
  • 怎么上传网站到ftp网络运营是做什么的