Ich möchte eine Konsole in meiner App erstellen, um Aktivitäten oder Informationen auf dem Bildschirm anzuzeigen. Es beginnt mit einer einfachen Zeichenfolge, "Warten auf neue Nachrichten ..." und wenn verschiedene Dinge passieren, werden neue Nachrichten zu dieser Zeichenfolge hinzugefügt. Wenn die Konsole voll ist, scrollt das Feld mit jeder Hinzufügung, so dass der Benutzer immer die letzte Nachricht am unteren Ende der Konsole sieht und alte Nachrichten von der oberen Ansicht verschwinden.Wie erstellt man eine minimale Konsole in einer Swift App (UILabel, UITextView, scrollen, Kopf abschneiden?)
Gibt es einen Weg mit "Truncate Head" und einem mehrzeiligen UILabel? Ich habe versucht, dies zuerst mit UILabel zu tun, aber ich konnte keine Möglichkeit finden, immer das Ende der Zeichenfolge zu sehen. Der abgeschnittene Kopf funktioniert tatsächlich Zeile für Zeile, also würde er mir die ersten fünf Zeilen der Zeichenfolge und dann den Schwanz der letzten sichtbaren Zeile zeigen. Ich habe verschiedene Ausrichtungs- und Verpackungseinstellungen ausprobiert, aber nichts hat funktioniert ... Fehle ich etwas? Gibt es eine Möglichkeit, ein UILabel immer das Ende einer Zeichenkette anzeigen zu lassen und den Inhalt einfach von oben verschwinden zu lassen?
Die Zeichenfolge für jedes Mal ausschneiden? Vielleicht könnte ich nur die Zeichenfolge auf die letzten tausend Zeichen oder ähnliches schneiden? Aber ich weiß nicht, wie groß das UILabel sein wird (auf verschiedenen Bildschirmen) ... und selbst wenn ich das täte, weil die Schriftarten das sind, was sie sind, bezweifle ich, dass ich genau die Anzahl der Zeichen kennen würde, die ich schneiden sollte. Ich kann es nicht auf eine bestimmte Menge von SPACE schneiden und die Menge an Platz in meinem UILabel bekommen, kann ich?
ODER, könnte ich eine UITextView und Scroll Vielleicht ist das, was ich tun muss. Ich kann den gesamten Wert des Textes meiner Textansicht erfassen und den neuen String hinzufügen und ihn wieder in die UITextView einfügen, und dann mit NSMakeRange und .scrollRangeToBottom nach unten scrollen.
func updateConsole(switchType: String) {
//unwind the console's text
if let tempString = consoleZe.text {
currentText = tempString
}
consoleZe.text = currentText + "A new message here! Something clever taken from \(switchType).\n"
//Scroll to the bottom
let bottom = NSMakeRange(consoleZe.text.characters.count - 1, 1)
consoleZe.scrollRangeToVisible(bottom)
}
Das scheint eine Menge Arbeit für meine kleine Update-Konsole. Es ist mir egal, ob ich scrollen kann, um vergangene Werte zu sehen. Ich würde sogar bevorzugen, die Konsole nicht scroll ... So greifen, Hinzufügen, Einfügen, die Unterseite und dann Scrollen scheint wie viel zusätzliches, unerwünschtes Gepäck.
Alle Gedanken über die Implementierung einer minimalen Konsole mit UILabel oder UITextView oder auf andere Weise sind willkommen, danke!
Vielen Dank für Ihre Freigabe! Ich bin nicht weit genug in meinen Fähigkeiten, um den meisten Code zu verstehen, den Sie geteilt haben, aber das Konzept, Konsolenmeldungen in einem Array zu speichern, macht für mich Sinn - es wäre viel mächtiger und erlaubt mir genau anzugeben, wie viel angezeigt werden soll unter anderen Umständen. Ich werde in Swift mehr über TableViews und Arrays lernen müssen, bevor ich etwas Ähnliches versuchen kann. Danke nochmal, D. – Beagley