Я пытаюсь узнать, как получить округленную подсветку фона с помощью ( NSAttributedString цвета фона и закругленных углов ) ...
Итак, я следую Основному текстовому руководству Apple по программированию и в основном пытаюсь воссоздать весь код Objective-C в Swift.
Я сталкиваюсь с ошибкой, когда UIGraphicsGetCurrentContext()
возвращает nil
Вот мой ViewController, который нажимается при нажатии кнопки в предыдущем представлении:
import UIKit
import CoreGraphics
public class HighlightPractiveViewController: UIViewController {
override public func viewDidLoad() {
drawRect()
}
func drawRect() {
let context: CGContext = UIGraphicsGetCurrentContext()!
context.translateBy(x: 0, y: view.bounds.size.height)
context.scaleBy(x: 1.0, y: -1.0)
context.textMatrix = CGAffineTransform.identity
let path = CGMutablePath()
let bounds = CGRect(x: 10.0, y: 10.0, width: 200.0, height: 200.0)
path.addRect(bounds)
let textString = NSString(string: "Hello, World!") // CF & NS are toll-free bridged.
let attrString = CFAttributedStringCreateMutable(kCFAllocatorDefault, 0)
CFAttributedStringReplaceString(attrString, CFRangeMake(0, 0), textString)
let rgbColorSpace: CGColorSpace = CGColorSpaceCreateDeviceRGB()
let components: [CGFloat] = [1.0, 0.0, 0.0, 0.8]
let red: CGColor = CGColor(colorSpace: rgbColorSpace, components: components)!
CFAttributedStringSetAttribute(attrString, CFRangeMake(0, 12), kCTForegroundColorAttributeName, red)
let framesetter = CTFramesetterCreateWithAttributedString(attrString!)
let frame = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, 0), path, nil)
CTFrameDraw(frame, context)
}
}
Как и где мне правильно позвонить UIGraphicsGetCurrentContext()
, чтобы он не возвращал ноль?