UITextView高度调整

问题描述 投票:0回答:2

我正在尝试创建一个ViewController来保存一些大文本。我使用UILabel,但由于文本可能很长,它将无法正常工作。试图切换到UITextViewbut我有一些问题。

我正在使用ScrollView,因为顶部有一个图像,底部有一个按钮。所以我不在UITextView本身内滚动。我已经禁用了它。

我希望Text根据文本长度自动调整高度。所以它可以滚动图像,按钮等。就像应用程序Instapaper,Medium,Pocket等。

我已经尝试了StackOverflow上的所有代码和解决方案,但它们要么不起作用,要么它们是Objective-C。

故事板结构:视图控制器 - >视图 - > ScrollView - >图像,TextView,按钮

class ViewController: UIViewController {

  @IBOutlet weak var textView: UITextView!
  var theContent = fromClass.text

  override func viewDidLoad() {
    super.viewDidLoad()
    textView.text = theContent
  }
}
swift uikit uitextview
2个回答
0
投票

几乎没有办法改变UITextView的大小

extension String {

    func bounds(approximated width: CGFloat, approximated height: CGFloat, font: UIFont) -> CGRect {
        let size = CGSize(width: width, height: height)
        let attribs = [NSAttributedStringKey.font: font]

        return NSString(string: self).boundingRect(with: size, options: .usesLineFragmentOrigin, attributes: attribs, context: nil)
    }
}

approximated width =你的UITextView的宽度我认为它将是静态值,你不会改变。

qazxsw poi =你的qazxsw poi的最小高度。

该方法将返回文本输入的框架。取决于它的高度属性,取决于有多大改变了approximated height的大小。

如果它不能满足你,你可以用另一种方式。

UITextView

与上面相同的用法。


0
投票

将视图层次结构调整为以下视图层次结构:

View Controller - > View - > ScrollView - > View1 - > Image,UILabel,Button

1-给出view1左上角 - 右下角的约束,并将中心X与其父视图对齐

2-在View1的顶部添加UITextView并赋予它左上角约束和固定高度约束。

3-添加一个func heightOfString(_ attributes: [NSAttributedKeyString : Any]) -> CGFloat { let size = self.size(withAttributes: attributes) return size.height } 并给它顶部约束图像和右下左约束它的超视图。

使UIImageView行数= 0

内容不应该是可滚动的。

请注意:在您的情况下;你不需要UILabel

如果你想使用UILabel

1-添加一个高度约束到UITextView并连接一个名为:constTextViewHeight的插座

UITextView

UITextView

© www.soinside.com 2019 - 2024. All rights reserved.