Ярлык WordWrap всегда переносит последние два слова - PullRequest
0 голосов
/ 12 февраля 2020

Новичок на платформе Xamarin и любопытно, почему мой лейбл переносит последние два слова вместо только последнего слова.

Я использовал Label из Xamarin From с LineBreakMode="WordWrap", теперь результирующее представление описано ниже:

enter image description here

Как видите, последние два слова обернуты, а не только последнее слово. Кроме того, он отлично работает в Android, эта проблема возникает только в сборке iOS.

<StackLayout VerticalOptions="StartAndExpand" Padding="{StaticResource MediumSpacingAll}">
      <Label Text="Thank you for joining..." TextColor="{StaticResource PrimaryColor}" LineBreakMode="WordWrap" HorizontalOptions="StartAndExpand" FontSize="40" FontAttributes="Bold"/>
</StackLayout>

Вот визуализация измерения метки в родительском представлении.

enter image description here

1 Ответ

0 голосов
/ 12 февраля 2020

Вы можете использовать Custom Renderer, чтобы установить выравнивание содержимого в iOS.

using System;


using Foundation;
using UIKit;

using xxx;
using xxx.iOS;

using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;

[assembly:ExportRenderer(typeof(Label),typeof(MyLabelRenderer))]
namespace xxx.iOS
{
    public class MyLabelRenderer:LabelRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
        {
            base.OnElementChanged(e);

            if(Control!=null)
            {
                string content = Control.Text;

                NSMutableAttributedString attributedString = new NSMutableAttributedString(content);

                NSMutableParagraphStyle paragraphStyle = new NSMutableParagraphStyle();
                paragraphStyle.Alignment = UITextAlignment.Left;

                attributedString.AddAttribute(UIStringAttributeKey.ParagraphStyle,paragraphStyle,new NSRange(0,content.Length));

                Control.AttributedText = attributedString;
            }
        }

    }
}
...