UIScrollViewにはUILabelのみが含まれています。 UILabelはNSAttributedStringが含まれているHTMLで作られた:HTML /属性付きテキストを含むUILabel - UIScrollView内での拡大/縮小方法
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の内部にラベルを配置するために自動レイアウトを使用しています。
1)読み込みに時間がかかる、2)スクロールが灰色の背景でうまくいかない、3)ズーミングにどのように役立ちますか? – swalkner
1)totaly trueですが、webviewをプリロードできます。 2)あなたはwebview(webView.backgroundColor)上の任意の種類の背景を設定できます。 3)デフォルトのWebViewではズームが可能です。 – Iosif
しかし、3)私がズームインしてかなり遠くまでズームアウトすると、テキストがクリップされ、ピンチジェスチャーにした後に再びロードされます。 – swalkner