gpt4 book ai didi

iOS String.drawAtPoint 始终以相同大小呈现

转载 作者:行者123 更新时间:2023-11-29 01:39:51 24 4
gpt4 key购买 nike

我有在 CALayer 中绘制文本的代码:

override func drawInContext(ctx: CGContext) {
...

// text
print ("font attributes: \(slider.thumbTextFontDescriptor.fontAttributes())")
if text != lastText {
lastTextSize = text.sizeWithAttributes(slider.thumbTextFontDescriptor.fontAttributes())
lastText = text
}

let textPoint = CGPointMake(CGRectGetMidX(thumbFrame) - lastTextSize.width / 2.0,CGRectGetMidY(thumbFrame) - lastTextSize.height / 2.0)
UIGraphicsPushContext(ctx)
CGContextSetFillColorWithColor(ctx, UIColor.blackColor().CGColor)
text.drawAtPoint(textPoint, withAttributes: slider.thumbTextFontDescriptor.fontAttributes())
UIGraphicsPopContext()

}

打印输出示例:

font attributes: ["NSFontNameAttribute": HelveticaNeue-Light, "NSFontSizeAttribute": 60]

字体描述符初始化为

if let font = UIFont(name: "HelveticaNeue-Light", size: 60.0) {
thumbTextFontDescriptor = font.fontDescriptor()
}

我的症状:文本总是以相同的大小和可能相同的字体绘制。

我可以将字体大小设置为 10.0 或 60.0,渲染结果始终相同。

当我注释掉“text.drawAtPoint...”这一行时,没有文本被渲染,所以我确信这是渲染的代码。

这是 iOS 9 通用,XCode 7 通用

知道为什么 text.drawAtPoint 似乎不遵守这些属性吗?

最佳答案

我认为问题在于

slider.thumbTextFontDescriptor.fontAttributes()

未返回 drawAtPoint: 方法所需的正确类型的字典。我刚刚尝试了您代码的以下简化版本,它在较旧的 Xcode (6.3) 上运行良好

let text = "test"

if let font = UIFont(name: "HelveticaNeue-Light", size: 60.0) {
let textPoint = CGPoint(x: 100, y: 100)
text.drawAtPoint(textPoint, withAttributes:[NSFontAttributeName:font])

}

关于iOS String.drawAtPoint 始终以相同大小呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32532581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com