xamarin c#UIViewController与滚动文本

本文关键字:文本 滚动 c#UIViewController xamarin | 更新日期: 2023-09-27 17:58:17

我正在用xamarin studio开发一个iOS应用程序,只有代码,没有Storyboard或任何设计器,只有c#代码。

我需要放置一个带有长文本的UILabel(或UITextView),比UIViewController长。例如,这是我的UILabel,长文本为:

   string textrStr = "";
        var descStrLabel = new UITextView(new CGRect(0, 340, w, 1050));
        descStrLabel.BackgroundColor = UIColor.Black;
        descStrLabel.Font = UIFont.SystemFontOfSize(10.0f);
        descStrLabel.TextAlignment = UITextAlignment.Justified;
        descStrLabel.TextColor = UIColor.LightGray;
        textrStr += @"È universalmente riconosciuto che un lettore che osserva il layout di una pagina viene distratto dal contenuto testuale se questo è leggibile. Lo scopo dell’utilizzo del Lorem Ipsum è che offre una normale distribuzione delle lettere (al contrario di quanto avviene se si utilizzano brevi frasi ripetute, ad esempio “testo qui”), apparendo come un normale blocco di testo leggibile. Molti software di impaginazione e di web design utilizzano Lorem Ipsum come testo modello. Molte versioni del testo sono state prodotte negli anni, a volte casualmente, a volte di proposito (ad esempio inserendo passaggi ironici).";
        descStrLabel.Text = textrStr;
        descStrLabel.TextContainer.LineBreakMode = UILineBreakMode.WordWrap;
        descStrLabel.AutoresizingMask = UIViewAutoresizing.FlexibleWidth;

这个文本将比设备屏幕更长,所以我需要滚动它。我尝试了几种解决方案,但都不起作用。

xamarin c#UIViewController与滚动文本

问题是您为UITextView 1050设置的高度。这比屏幕高度高,如果它足够高,可以容纳所有文本,则不需要滚动。但由于它比屏幕高,您不会看到所有的文本,因为UITextView的大部分都在屏幕外。将高度设置为您希望文本视图在屏幕上占据的高度,我认为它是screen (or view) height - 340,因为340是UITextView的顶部,而不是容纳所有文本所需的高度。UITextView只有在太小而无法容纳所有文本时才可滚动。

从您的代码中,我看不出这个UITextView是在视图控制器的主视图中,还是在子视图中。如果在主视图中,请尝试:

var descStrLabel = new UITextView(new CGRect(0, 340, w, View.Bounds.Height - 340));

如果在子视图中,用containerView.Bounds.Height - 340 替换View.Bounds.Height - 340

此外,如果您需要支持横向,我建议添加FlexibleHeight标志:

descStrLabel.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight;

如果没有该标志,当您旋转到横向时,您将无法再一直滚动到底部,因为UITextView的高度现在太高,无法完全显示在屏幕上。

我希望这能有所帮助!