46 lines
1.3 KiB
Swift
46 lines
1.3 KiB
Swift
//
|
|
// AttributedStringView.swift
|
|
// NetNewsWire-iOS
|
|
//
|
|
// Created by Maurice Parker on 9/16/19.
|
|
// Copyright © 2019 Ranchero Software. All rights reserved.
|
|
//
|
|
|
|
import SwiftUI
|
|
|
|
struct AttributedStringView: UIViewRepresentable {
|
|
|
|
let string: NSAttributedString
|
|
let preferredMaxLayoutWidth: CGFloat
|
|
|
|
func makeUIView(context: Context) -> HackedTextView {
|
|
return HackedTextView()
|
|
}
|
|
|
|
func updateUIView(_ view: HackedTextView, context: Context) {
|
|
view.attributedText = string
|
|
|
|
view.preferredMaxLayoutWidth = preferredMaxLayoutWidth
|
|
view.isScrollEnabled = false
|
|
view.textContainer.lineBreakMode = .byWordWrapping
|
|
|
|
view.isUserInteractionEnabled = true
|
|
view.adjustsFontForContentSizeCategory = true
|
|
view.font = .preferredFont(forTextStyle: .body)
|
|
view.textColor = UIColor.label
|
|
view.tintColor = AppAssets.accentColor
|
|
view.backgroundColor = UIColor.secondarySystemGroupedBackground
|
|
|
|
view.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
|
|
view.setContentCompressionResistancePriority(.required, for: .vertical)
|
|
}
|
|
|
|
}
|
|
|
|
class HackedTextView: UITextView {
|
|
var preferredMaxLayoutWidth = CGFloat.zero
|
|
override var intrinsicContentSize: CGSize {
|
|
return sizeThatFits(CGSize(width: preferredMaxLayoutWidth, height: .infinity))
|
|
}
|
|
}
|