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

时间:2015-04-02 00:41:00

标签: swift ios8 uitextview

我不认为有人可以指导我以正确的方式动态调整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
    }

enter image description here

3 个答案:

答案 0 :(得分:43)

禁用滚动,不要放置任何其他可以指示UITextView高度的约束。

答案 1 :(得分:2)

这是对的,但我也必须写:

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/

答案 2 :(得分:1)

您可以为要以编程方式变化的任何约束创建IBOutlet。然后通过代码中的NSLayoutConstraint的constant属性通过其出口引用来改变约束。这非常有效。你可以通过这种方式改变宽度,高度和位置。你不能修改 NSLayoutConstraint的multiplier属性(它是readonly)。但这并不重要,因为您可以通过在Interface Builder中定义约束的乘数属性(获得比例值)来实现,您可以通过在代码中执行数学运算并修改constant属性来实现。

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