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

网站排版网站域名解绑

网站排版,网站域名解绑,wordpress netease,百度手机seo软件文章目录 1.将整个view截图返回image:2.截取view的部分区域,返回image:3.旧方法:4.Tips参考: 1.将整个view截图返回image: 这些 api 已被废弃,所以需要判断 iOS 版本 写两套代码: R…

文章目录

  • 1.将整个view截图返回image:
  • 2.截取view的部分区域,返回image:
  • 3.旧方法:
  • 4.Tips
  • 参考:

1.将整个view截图返回image:

这些 api 已被废弃,所以需要判断 iOS 版本 写两套代码:
Replace usage of UIGraphicsBeginImageContextWithOptions with UIGraphicsImageRenderer.
Replace usage of UIGraphicsGetImageFromCurrentImageContext with UIGraphicsImageRendererContext.currentImage.

Swift 版本:

/// 截图整个view
/// - Returns: image
func mooSnapshot() -> UIImage? {if self.window == nil {return nil}let scale = UIScreen.main.scalevar image: UIImage? = nil// 1. 创建绘图渲染格式if #available(iOS 10.0, *) {let format = UIGraphicsImageRendererFormat()format.scale = scaleformat.opaque = self.isOpaque// 2. 创建绘图渲染器let renderer = UIGraphicsImageRenderer(size: self.bounds.size,format: format)// 3. 绘制图image = renderer.image { context inlet success = self.drawHierarchy(in: self.bounds, afterScreenUpdates: true)print("draw success: \(success)")}} else {UIGraphicsBeginImageContextWithOptions(self.bounds.size, self.isOpaque, scale);let success = self.drawHierarchy(in: self.bounds, afterScreenUpdates: true)print("draw success: \(success)")image = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();}return image
}

OC版本:

- (UIImage * _Nullable)mooSnapshot {if (CGRectGetWidth(self.bounds) <= 0.0 || CGRectGetHeight(self.bounds) <= 0.0) {return nil;}if (!self.window) {return nil;}if (!self.superview) {return nil;}CGFloat scale = [UIScreen mainScreen].scale;UIImage *image = nil;if (@available(iOS 10.0, *)) {UIGraphicsImageRendererFormat *format = [[UIGraphicsImageRendererFormat alloc] init];format.scale = scale;format.opaque = NO;UIGraphicsImageRenderer *renderer = [[UIGraphicsImageRenderer alloc] initWithSize:self.bounds.sizeformat:format];image = [renderer imageWithActions:^(UIGraphicsImageRendererContext * _Nonnull rendererContext) {BOOL success = [self drawViewHierarchyInRect:self.bounds afterScreenUpdates:YES];NSLog(@"%p, Snapshot success: %@", self, @(success));}];} else {UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, scale);BOOL success = [self drawViewHierarchyInRect:self.bounds afterScreenUpdates:YES];NSLog(@"%p,  Snapshot success: %@", self, @(success));image = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();}return image;
}

2.截取view的部分区域,返回image:

Capture the frame area of the view.

Swift 版本:

import CoreGraphics
extension UIView {/// 截取view的部分区域/// - Parameter frame: 需要截取的区域/// - Returns: imagefunc mooSnapshotForFrame(_ frame: CGRect) -> UIImage? {guard let image = self.mooSnapshot() else { return nil }guard let cgImage = image.cgImage else { return nil }let scale = UIScreen.main.scale// 根据屏幕倍率将 frame 进行缩放let scaledRect = CGRectApplyAffineTransform(frame, CGAffineTransformMakeScale(scale, scale))// 根据 缩放frame 进行裁剪guard let scaledCGImage = cgImage.cropping(to: scaledRect) else { return nil }let returnImage = UIImage(cgImage: scaledCGImage)return returnImage}
}

OC 版本:

- (UIImage * _Nullable)mooSnapshotForFrame:(CGRect)frame {if (CGRectGetWidth(frame) <= 0.0 || CGRectGetHeight(frame) <= 0.0) {return nil;}UIImage *image = [self mooSnapshot];if (!image) {return nil;}CGFloat scale = [UIScreen mainScreen].scale;CGRect scaledRect = CGRectApplyAffineTransform(frame, CGAffineTransformMakeScale(scale, scale));CGImageRef cgImage = CGImageCreateWithImageInRect(image.CGImage, scaledRect);UIImage *returnImage = [UIImage imageWithCGImage:cgImage];CGImageRelease(cgImage);return returnImage;
}

以下就是将一个view的上半部分截取成image后展示如下:

在这里插入图片描述


3.旧方法:

func mooSnapshot() -> UIImage? {guard CGRectGetWidth(self.bounds) > 0.0 && CGRectGetHeight(self.bounds) > 0.0 else {return nil}UIGraphicsBeginImageContextWithOptions(self.bounds.size, false, 0.0)let success = self.drawHierarchy(in: self.bounds, afterScreenUpdates: true)print("draw success: \(success)")let image = UIGraphicsGetImageFromCurrentImageContext()UIGraphicsEndPDFContext()return image
}

Replace usage of UIGraphicsBeginImageContext with UIGraphicsImageRenderer.
Replace usage of UIGraphicsBeginImageContextWithOptions with UIGraphicsImageRenderer.
Replace usage of UIGraphicsGetImageFromCurrentImageContext with UIGraphicsImageRendererContext.currentImage.
UIGraphicsEndImageContext should only be used alongside UIGraphicsBeginImageContext[WithOptions].
这些旧的 api 已经被废弃了,用文章开头的 api 代替


4.Tips

Tips1:得在加载到父视图 layout 后触发
Tips2:width 或 height 有一个为空 drawHierarchy 就会 crash(就版iOS不会crash,新版会)


参考:

drawViewHierarchyInRect:afterScreenUpdates:
ios drawViewHierarchyInRect crash EXC_BREAKPOINT UNKNOWN

http://www.yayakq.cn/news/959929/

相关文章:

  • 百度信息流代理seo实战培训王乃用
  • 网站建设要如何选择企业网站开发注意什么
  • 南宁商城网站建设7k7k小游戏大全网页版
  • 滕州网站制作网站死链接扫描
  • 网站建设需要注意网架加工价格
  • 专业网站制作公司名称网站优化人员通常会将目标关键词放在网站首页中的
  • 家用电脑做网站刷死粉网站推广
  • 手机微网站二级菜单怎么做阿里云 企业网站
  • 建设局网站简介网站信息化建设存在的困难
  • 网站建设开票单位注册一个新公司需要多少钱
  • 网页设计代码显示时间seo网站推广技术
  • 网站建设php实验报告艺麟盛世可以做网站推广吗
  • 上不了国外网站怎么做外贸做网站算新媒体运营吗
  • 做网站公司长沙哪家好原创视频素材哪里弄
  • 网站数据库密码修改了要怎么做临沂网站设计制作
  • 怎么做移动网站济南网站建设抖音平台
  • 网站鼠标经过图片代码河北工程信息网官网
  • 南通网站建设服务seo站长工具查询系统
  • 国内哪家网站建设公司好网站上的二维码怎么做
  • wordpress企业网站模板下载网站建立的步骤是( )
  • 大连地区做网站ASP网站建设招聘
  • 怎样在网站做咨询医生挣钱4s店网站模板
  • 学校网站在建设方面的的优势wordpress多合一seo包
  • 高密做网站哪家好价位网页设计与实训布置课堂作业
  • 中国公路建设协会网站宁波seo网站排名优化公司
  • 广州云脑网站建设网站制作2007
  • 企业网站建设套餐费用广州骏域网络
  • 甘肃建设厅职称查询官方网站windows优化大师怎么下载
  • 做网站延期交付了旅游类网站开发毕业设计
  • 百度网站怎么做的如何做网站主页