2017-08-24 1 views
2

Ich baue eine App und es scheint wie ein einfaches Problem, aber ich kann nicht für das Leben von mir es beheben.Autogröße UITextView für Kompatibilität - Swift 3

Auf einem Bildschirm habe ich eine große Menge von Text, durch eine UITextView zur Verfügung gestellt. Ich möchte, dass es im Wesentlichen statisch ist, ohne die Bildlaufleiste.

Wenn ich es in der Entwurfsansicht manuell ändern und es auf einem iPhone 7 ausführen, passt der Text gut. Allerdings, wenn ich es auf einem iPhone 5c laufen lasse, ist es aufgrund der Bildschirmabmessungen zu klein und reduziert es dann natürlich und fügt einen Bildlauf hinzu.

Gibt es eine Möglichkeit, den Text zu sagen, um alles anzuzeigen und die Größe entsprechend zu ändern, ähnlich dem Befehl SizeToFit()?

+0

Verwenden Sie 'UITextView.scrollEnabled = false' –

+0

Nach Code: Aktivieren Scroll, dann setText, dann lesen Sie die contentSize (gelten dann einige Einschränkungen entsprechend), deaktivieren Sie dann scroll? – Larme

+0

Wird das Scrollrad einfach nicht deaktiviert? Oder passt es die UITextView-Ausgabe automatisch an die Größe an? –

Antwort

1

Verwenden Sie einfach das Label, wenn Sie das Scroll-Verhalten nicht möchten.

label.adjustsFontSizeToFitWidth = true 
label.numberOfLines = 0 

Dies wird die Schriftgröße beheben, wenn das Etikett nicht groß genug ist.

+0

Das hat perfekt funktioniert, danke. –

0

zuordnen Bedingungen (kleine rote Linien in Screenshot) auf Ihre UITextView dann wird es auf allen Größen passen richtig enter image description here

Und wie @Orkhan Alikhanov sagte, verwenden UITextView.scrollEnabled false = - blättern innerhalb des Textview zu deaktivieren

0

Wenn Sie nicht blättern möchten, warum verwenden Sie ein Textfeld anstelle einer Beschriftung? In beiden Fällen können Sie die Antwort hier UIDevice currentDevice model possible values verwenden, um festzustellen, welches Gerät Sie verwenden, und dann können Sie die Schriftgröße basierend auf diesen Informationen festlegen.

Ich schlage vor, eine Funktion zu erstellen, die diese Berechnung durchführt, und dann die Schriftgröße zurückgibt, so dass Sie nur aufrufen können, wenn Sie Schriftart festlegen.

+0

Wenn ich ein Label verwende, bleibt es nur in einer Zeile. Ich wusste nicht, dass Sie Absätze auf Etiketten haben könnten? –

+0

Wenn Sie die Beschriftungslinien = 0 einstellen, wird die Höhe angepasst, um den gesamten Inhalt anzuzeigen. Sie müssen außerdem sicherstellen, dass Ihre Integritätsbedingungen es zulassen, dass es wächst und dass es keine genauen Höhenbeschränkungen aufweist. – CSjunkie

Verwandte Themen