|
13 | 13 | uiView.textContainer.lineBreakMode = NSLineBreakMode( |
14 | 14 | truncationMode: context.environment.truncationMode |
15 | 15 | ) |
16 | | - |
17 | 16 | uiView.openLink = onOpenLink ?? { context.environment.openURL($0) } |
| 17 | + uiView.invalidateIntrinsicContentSize() |
| 18 | + uiView.updateFrame() |
18 | 19 | textSizeViewModel.didUpdateTextView(uiView) |
19 | 20 | } |
20 | 21 | } |
|
33 | 34 | override init(frame: CGRect, textContainer: NSTextContainer?) { |
34 | 35 | super.init(frame: frame, textContainer: textContainer) |
35 | 36 |
|
36 | | - let fixedWidth = frame.size.width |
37 | | - let newSize = self.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude)) |
38 | | - self.frame.size = CGSize(width: max(newSize.width, fixedWidth), height: newSize.height) |
| 37 | + |
39 | 38 | self.backgroundColor = .clear |
40 | 39 | self.textContainerInset = .zero |
41 | 40 | self.isEditable = false |
42 | 41 | self.isSelectable = false |
43 | 42 | self.isScrollEnabled = false |
44 | 43 | self.textContainer.lineFragmentPadding = 0 |
45 | | - |
| 44 | + updateFrame() |
46 | 45 | self.addGestureRecognizer( |
47 | 46 | UITapGestureRecognizer(target: self, action: #selector(handleTap(sender:))) |
48 | 47 | ) |
49 | 48 | } |
| 49 | + |
50 | 50 |
|
51 | 51 | required init?(coder: NSCoder) { |
52 | 52 | fatalError("init(coder:) has not been implemented") |
53 | 53 | } |
54 | 54 |
|
| 55 | + func updateFrame() { |
| 56 | + let fixedWidth = frame.size.width |
| 57 | + let newSize = self.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude)) |
| 58 | + self.frame.size = CGSize(width: max(newSize.width, fixedWidth), height: newSize.height) |
| 59 | + } |
55 | 60 |
|
56 | 61 |
|
57 | 62 | override var intrinsicContentSize: CGSize { |
|
0 commit comments