首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在CGContext中绘制UIView

在CGContext中绘制UIView
EN

Stack Overflow用户
提问于 2019-07-02 17:53:09
回答 1查看 1.8K关注 0票数 1

我正在尝试用CGContext绘制简单的UIView。我正确地绘制了一个字符串,但没有绘制UIView

用于绘制视图的方法:

代码语言:javascript
复制
view.draw(view.layer, in: context)

但它不起作用。是否有其他方法可以在CGContext中绘制UIView

代码语言:javascript
复制
import UIKit
import CoreGraphics

let contextSize = CGSize(width: 400, height: 400)

UIGraphicsBeginImageContextWithOptions(contextSize, false, 0.0)

guard let context = UIGraphicsGetCurrentContext() else {
    fatalError("no context")
}

let size = CGSize(width: 30, height: 20)
let point = CGPoint(x: 20, y: 240)
let rect = CGRect(origin: point, size: size)

let text = "TEST"
let paragraphStyle = NSMutableParagraphStyle.default.mutableCopy() as! NSMutableParagraphStyle
paragraphStyle.minimumLineHeight = UIFont.systemFont(ofSize: 6).lineHeight
paragraphStyle.lineBreakMode = .byWordWrapping
paragraphStyle.alignment = .center
let attributes: [NSAttributedString.Key : Any] =  [.font: UIFont.systemFont(ofSize: 12),
                                                   .foregroundColor: UIColor.cyan,
                                                   .paragraphStyle: paragraphStyle]
text.draw(with: rect, options: .usesLineFragmentOrigin, attributes: attributes, context: nil)


let view = UIView()
view.backgroundColor = .magenta
view.layer.borderWidth = 2.0
view.layer.borderColor = UIColor.green.cgColor
view.frame = CGRect(origin: point, size: size)

view.draw(view.layer, in: context)

let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-02 19:45:06

我相信你要找的是

代码语言:javascript
复制
view.drawHierarchy(in: view.bounds, afterScreenUpdates: true)

这将绘制到您当前设置的任何上下文。既然你做了context = UIGraphicsGetCurrentContext(),那应该已经是你的上下文了。我用你的代码试过了,看起来很管用。我得到了一个带有边框和一些文本的矩形图像。

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

https://stackoverflow.com/questions/56849792

复制
相关文章

相似问题

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