gpt4 book ai didi

swift - 包含 HTML/属性文本的 UILabel - 如何在 UIScrollView 内缩放

转载 作者:行者123 更新时间:2023-11-30 12:03:51 25 4
gpt4 key购买 nike

我确实有一个仅包含 UILabel 的 UIScrollView。 UILabel 包含一个由 HTML 组成的 NSAttributedString:

let str = try NSAttributedString(data: content.data(using: String.Encoding.unicode, allowLossyConversion: true)!, options: [NSDocumentTypeDocumentAttribute : NSHTMLTextDocumentType], documentAttributes: nil)

现在我想让用户缩放标签以使所有内容都更大。仅使用时

func viewForZooming(in scrollView: UIScrollView) -> UIView?

一切都按预期工作,但字体变得模糊。我尝试在缩放后更改字体大小:

func scrollViewDidEndZooming(_ scrollView: UIScrollView, with view: UIView?, atScale scale: CGFloat) {
myLabel.setFontSize(pointSize: scrollView.zoomScale)
}

其功能如下:

extension UILabel {
func setFontSize(pointSize: CGFloat) {
let fullRange = NSRange(location: 0, length: text!.count)
let mutableAttributeText = NSMutableAttributedString(attributedString: attributedText!)
mutableAttributeText.enumerateAttribute(NSFontAttributeName, in: fullRange, options: NSAttributedString.EnumerationOptions.longestEffectiveRangeNotRequired) {
(attribute: Any!, range: NSRange, stop: UnsafeMutablePointer<ObjCBool>) -> Void in
if let attributeFont = attribute as? UIFont {
let newPointSize = 12 * pointSize
let scaledFont = UIFont(descriptor: attributeFont.fontDescriptor, size: newPointSize)
mutableAttributeText.addAttribute(NSFontAttributeName, value: scaledFont, range: range)
}
}
attributedText = mutableAttributeText
}

}

但是文本的位置与以前不完全相同。现在让用户放大和缩小并使文本仍然清晰的最佳方法是什么?我使用自动布局将标签定位在 UIScrollView 内。

最佳答案

@swalkner 既然你必须显示 html,为什么不使用 WKWebview 而不是 UIScrollView。

let htmlString = "some_html"
let webView:WKWebView = WKWebView.init(frame: frame)
webView.backgroundColor = UIColor.white
self.view.addSubview(webView)
// load html
webView.loadHTMLString(htmlString, baseURL: nil)

如果加载 html 需要一点时间,您可以简单地尝试预加载 Web View ,方法是创建它并在推送或呈现 Controller 之前加载 html。

关于swift - 包含 HTML/属性文本的 UILabel - 如何在 UIScrollView 内缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46889586/

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