基于 Swift 中内容的动态 UITextView 大小

Dynamic UITextView size based on content in Swift

我不认为有人可以指导我在仍然使用自动布局的同时动态调整 UITextView 大小的正确方法?使用Swift,即

我已经尝试以编程方式调整底部约束,试图让 UITextView 包含内容。但是我不确定如何获取 UITextView 内容的高度?

我正在尝试将数据加载到 UITextView 字段中,然后动态调整它们以使其看起来整洁。

@IBOutlet weak var serviceDescriptionTextViewBottomGuide: NSLayoutConstraint! 

override func viewDidLoad() {

        self.activityName.text = serviceCodes[selectionValue]
        self.serviceDescriptionTextView.text = serviceDescription[selectionValue]
        self.whenToUseDescriptionTextView.text = whenToUseCode[selectionValue]

        self.serviceDescriptionTextViewBottomGuide?.constant += x
    }

您可以为要以编程方式改变的任何约束创建一个 IBOutlet。然后通过它的 outleted 引用在代码中通过 NSLayoutConstraint 的 constant 属性 改变约束。这很好用。您可以那样改变宽度、高度和位置。你不能 modify NSLayoutConstraint 的 multiplier 属性 虽然(它是只读的)。但这并不重要,因为您可以通过在 Interface Builder 中定义约束的乘数 属性 来完成(以获得比例值),您也可以通过在代码中执行数学运算并修改 constant 属性.

另一种方法是,您可以禁用调整大小掩码转换(e.g.the UIView translatesAutoresizingMaskIntoConstraints 属性 设置为 nil)并以编程方式从头开始创建约束,为此,推荐的方法(更易于使用)称为 视觉格式。但是,完全以编程方式创建约束要比使用 Interface Builder Autolayout 创建视图的粗略草稿,然后事后以编程方式调整 select 约束要多得多,至少在典型的简单情况下是这样。

禁用滚动并且不要放置任何其他可以决定 UITextView 高度的约束。

这是对的,但我也不得不写:

override func viewDidLoad() {  
    super.viewDidLoad()

    tableView.estimatedRowHeight = 44.0 // Replace with your actual estimation
    // Automatic dimensions to tell the table view to use dynamic height
    tableView.rowHeight = UITableViewAutomaticDimension
}

查看更多:

https://pontifex.azurewebsites.net/self-sizing-uitableviewcell-with-uitextview-in-ios-8/