Einstellung UITextView Rahmen an Inhalt Größe funktioniert nicht mehr in Xcode 5
Das code-snippet unten gearbeitet, um die Größe einer UITextView Rahmen zum Inhalt es ist die Höhe, vor der Installation von Xcode 5, aber es funktioniert nicht, weil das upgrade:
CGRect frame = _textView.frame;
frame.size.height = _textView.contentSize.height;
_textView.frame = frame;
Ich gesucht habe und nicht gefunden habe das zu beheben. Irgendwelche Gedanken?
InformationsquelleAutor Silverstar | 2013-09-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es neuen Stoff für diese auf iOS 7.
Zu bekommen, die "fitted" - Größe vom text-Ansicht, nachdem es aktualisiert den text, rufen Sie
usedRectForTextContainer:
auf die textView istlayoutManager
Eigenschaft, vorbei an der textView isttextContainer
- Eigenschaft als argument.Wort der Warnung zum scrollen: beachten Sie jedoch, dass die änderung der frame-Größe der text-Ansicht nach es hat, aktualisiert es den text können unerwartete visuelle Fehler, wenn scrollen deaktiviert ist, auf Ihre text-anzeigen. Wenn dies geschieht, setzen Sie scrollen aktiviert ist, bevor Sie den text von der text-Ansicht, dann deaktivieren Sie es, nachdem es aktualisiert (wenn Sie benötigen, scrollen Sie zu deaktiviert bleiben).
Ich bin mit diesen zu kämpfen, und kann es nicht mehr zu arbeiten, kannst du uns ein Beispiel-code? Danke.
Ein code-Beispiel wäre hilfreich. Ich interpretierte Ihre Antwort als
[[textView layoutManager] usedRectForTextContainer:[textView textContainer]];
welche aber nicht die Größe der textView die Höhe passen Sie den InhaltFunktioniert bei mir nicht --
usedRectForTextContainer
manchmal gibt eine enorm große Zahl für die Höhe und manchmal gibt eine falsche Zahl auf der Grundlage der vorherigen Inhalt der textView (dh, was Sie gerade ersetzt mittextView.text = newString
).Ich kann es nicht glauben.. ich war wirklich kämpfen mit, warum die textView war nicht die Rückkehr der richtigen Größe, so, wie Sie vorgeschlagen, ich drehte mich auf scrollen... es funktioniert...
InformationsquelleAutor jaredsinclair
Arbeiten in iOS 7 (Xcode 5), nur:
Geben den gesamten Raum für den text, indem Sie die Einstellung:
[myTextView setScrollEnabled:YES];
Übergeben Sie die real-text:
myTextView.text = theTextVariable;
odermyTextView.text = @"The text...";
Autoresize textView:
[myTextView sizeToFit];
Deaktivieren scrollen:
[myTextView setScrollEnabled:NO];
P. S: myTextView kann als du selbst.myTextView oder _myTextView
Und Spaß haben!
Funktioniert bei mir nicht -- ich
[textView layoutIfNeeded]
statt (siehe Antwort unten). Ich bin wirklich verwirrt, warum einige Leute denken, dass dies funktioniert und andere (nicht nur mich) eindeutig nicht.InformationsquelleAutor Matheus Abreu
Glaube ich der richtige Weg zu zwingen, einen textView-Aktualisierung der contentSize aufrufen,
Jedoch, iOS 7.0 und 7.1 scheint dies noch nicht zuverlässig arbeiten, wenn Sie zuerst festlegen,
Es ist mir nicht klar, ob das ein bug ist oder nicht, da kann ich nicht wirklich finden eine gute Erklärung, was "nicht-zusammenhängenden-layout" auch bedeutet.
(Mein persönlicher Anwendungsfall ist die Aktualisierung
textView.text = newValue
programmgesteuert, dann versucht, um die Größe der textView entsprechend.)Suche alle Tag - - dies ist die einzige Lösung, die für mich gearbeitet. danke.
allowsNonContiguousLayout ist immer noch der Schlüssel zur Lösung des Problems in iOS 9! Dank
InformationsquelleAutor c roald
Ist, was Sie brauchen.
Alles, was Sie tun müssen ist, stellen Sie sicher, dass:
BEVOR Sie die UITextView text-Inhalt.
Dann können Sie:
Nachdem Sie sich gesetzt haben, den text. Gleiche wie das schreiben Ihrer eigenen bling-Funktion oder das einstellen kompliziert bounding-rect-Methoden. Warum so etwas so kompliziert, wenn die Lösung ist so einfach wie drei Zeilen?
Sagte, wickeln Sie diese Funktionen so auf:
Definieren und es in einer pro-Datei oder globaler basis, um zu vermeiden, dass manuell schreiben oder kopieren/fügen Sie die vier Zeilen, und rufen Sie es jedes mal. Nennen wir es doch einfach so:
Wenn das nicht funktioniert:
Haben, und Sie werden golden.
Denke ich..
Das ist Pseudocode. Nur zur info.
Veröffentlichen Sie Ihren code, und ich werde sehen, ob ich helfen kann.
Ich habe eine
UITextView *commentTextView
und in-viewWillAppear
ich ein update der Inhalte mitcommentTextView.text = commentStringForItem
. (Ich manchmal auch, es zu aktualisieren, in Reaktion auf eine UI-Aktion.) Dann möchte ich die Größe des Feldes so, dass es zeigt, wie viel der Kommentar wie möglich, so dass ich versuchen zu überprüfencommentTextView.contentSize
. Dieser Wert ist falsch (nicht aktualisiert, von seinem vorherigen Wert), wenn ich den ersten Anruf[commentTextView layoutIfNeeded]
--sizeToFit
funktioniert nicht.Folgende
sizeToFit
mitcommentTextView.scrollEnabled = false; commentTextView.scrollEnabled = true;
scheint nicht zu helfen. (Ich will scrollEnabled auf meinem Feld, in den Allgemeinen Fall.) AuchsizeToFit
verwirrt mit der Breite von meinem Feld, wenn ich nur wollen, um Ihre Höhe.Nur stellen Sie sicher
.scrollEnabled
istTRUE
rufen Sie vorsizeToFit
und es sollte auf jeden Fall entsprechend aktualisieren. Fühlen Sie sich frei, zu verlassenscrollEnabled
eingestelltTRUE
. dieFALSE
war dort nur für Leute, die nicht wollen, dass es interagiert mit.InformationsquelleAutor topLayoutGuide
Eine einfachere Lösung ist die Verwendung, dass:
Diese Arbeit für mich.
InformationsquelleAutor Javier Roberto