2017-09-21 3 views
0

Ich versuche, die Höhe eines UITextView basierend auf dem Inhalt zu aktualisieren. Ich habe this solution gesehen, kann aber nicht bekommen es mit meinem aktuellen Code zu arbeiten (noch schnellen Lernen)Programmgesteuert aktualisieren UITextView Höhe

Ich definiere die UITextView als solche:

let eventDetailInfoTextBox : UITextView = { 
    let textbox = UITextView() 
    textbox.backgroundColor = UIColor.clear 
    textbox.layer.borderWidth = 1 
    textbox.layer.borderColor = ColorPallet.AppTertiaryColor.cgColor 
    textbox.layer.cornerRadius = 10 
    textbox.setNeedsDisplay() 
    let contentSize = textbox.sizeThatFits(textbox.bounds.size) 
    textbox.isEditable = false 
    return textbox 
}() 

Die subview dann in setupViews hinzugefügt wird() zusammen mit der Festlegung ihrer Position in der Ansicht, die einen Aufruf an setupEventDetailInfoTextBox()

fileprivate func setupEventDetailInfoTextbox() { 

    print("Event Detail Info Text Box Height: \(eventDetailInfoTextBox.contentSize.height)") 

    var frame = eventDetailInfoTextBox.frame 
    frame.size.height = eventDetailInfoTextBox.contentSize.height 
    eventDetailInfoTextBox.anchor(eventDetailMapView.bottomAnchor, left: self.leftAnchor, bottom: nil, right: self.rightAnchor, topConstant: 8, leftConstant: 10, bottomConstant: 0, rightConstant: 10, widthConstant: 0, heightConstant: frame.size.height) 

} 

der Aufruf von .anchor verwendet, wird auf der Basis Lets bauen, die App-Frameworks über diese link gefunden und im Grunde wickelt die lokalen Funktionen von Xcode auf. Ich weiß, das funktioniert und habe die gleiche Funktion wiederholt in meiner App verwendet.

Die Ausgabe der print-Anweisung ist -8 und wird durch eine Höhe dargestellt, die (manchmal) 1 Textzeile anzeigen kann.

Kann jemand sehen, warum mein Textfeld es ablehnt, größer zu werden, wenn ich mehr als 1 Textzeile habe?

Ich bin mit 10 IOS, Xcode 8 und in schnellen 3.

Antwort

0

Folgen Sie diesen Schritt

  • erstellen Höhenbeschränkung Ausgang des Textview zu schreiben.
  • Berechnen Inhalt Höhe von Textview.
  • Aktualisiere den Konstantenwert für die Konstante TextView.
  • Rufen Sie die Funktion layoutIfNeeded() auf.

Ich hoffe, es wird funktionieren.

+0

Danke Sushil für Ihre Antwort. Was ich vergessen habe, ist, dass ich kein Storyboard für mein Layout verwende (daher der .anchor-Code). Ein Teil meiner Frage bezieht sich auf die Aufgaben, die Sie vorschlagen. Kannst du bitte irgendeine Anleitung geben? –

0

Wenn Sie etwas statisch, herunter und schmutzig wollen, können Sie den Prozess rationalisieren (nicht setzen und zurücksetzen Eigenschaften), solange Sie alles in der richtigen Reihenfolge platzieren. Wenn Sie mit Gerätedrehungen oder anderen Laufzeitänderungen umgehen müssen, würde das etwas weniger Down und Dreck erfordern, aber nicht viel - ich bin mir nicht sicher, was Sie brauchen, also entschied ich mich für das Einfachere.

// instance property so that other constraints can refer to it 
let descriptionTextView = UITextView() 

// configure text view 
descriptionTextView.text = descriptionModel 
descriptionTextView.font = // UIFont 
descriptionTextView.textColor = // UIColor 
descriptionTextView.isEditable = false 
descriptionTextView.translatesAutoresizingMaskIntoConstraints = false 
view.addSubview(descriptionTextView) 

// set constraints 
descriptionTextView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 16).isActive = true 
descriptionTextView.topAnchor.constraint(equalTo: divider.bottomAnchor, constant: 32).isActive = true 
descriptionTextView.widthAnchor.constraint(equalTo: view.widthAnchor, constant: -32).isActive = true 
descriptionTextView.sizeToFit() 
descriptionTextView.layoutIfNeeded() 
descriptionTextView.heightAnchor.constraint(equalToConstant: descriptionTextView.contentSize.height).isActive = true 
Verwandte Themen