흑우마스터의 마법의 공간

MAUI에서 Label에 MaxLines을 줘도 LinebreakMode가 TailTruncation이 되지 않을 때 본문

프로그래밍/Xamarin

MAUI에서 Label에 MaxLines을 줘도 LinebreakMode가 TailTruncation이 되지 않을 때

흑우마스터 2023. 3. 3. 08:13

WPF를 줄곳 해서 그런가 당연히 될 줄 알았던 건데 실제로 MAUI의 데스크탑으로 열게 되면 동작을 하는 기능입니다. 대게 실수 할 수 있는 부분은 Width를 제대로 주지 않아서 영역 밖으로 쭉 나가버리는 경우는 있긴한데 그 문제는 아니고

 

단톡방에 한 분이 LinebreakMode랑 MaxLine을 같이 줬는데 ...이 안 생긴다고 물어보셔서 "에잉 높이가 안 정해져서 안되겠지" 라고 생각했지만 진짜 안됐네요

 

아래 구문을 MauiProgram.cs에 포함시켜주세요

 

static void AllowMultiLineTruncation() {
        static void UpdateMaxLines(Microsoft.Maui.Handlers.LabelHandler handler, ILabel label) {

#if ANDROID
      var textView = handler.PlatformView;
      if(    label is Label controlsLabel 
          && textView.Ellipsize == Android.Text.TextUtils.TruncateAt.End )
      {
        textView.SetMaxLines( controlsLabel.MaxLines );
      }
#elif IOS
            var textView = handler.PlatformView;
            if (label is Label controlsLabel
                && textView.LineBreakMode == UIKit.UILineBreakMode.TailTruncation) {
                textView.Lines = controlsLabel.MaxLines;
            }
#endif
        };

        Label.ControlsLabelMapper.AppendToMapping(
           nameof(Label.LineBreakMode), UpdateMaxLines);

        Label.ControlsLabelMapper.AppendToMapping(
          nameof(Label.MaxLines), UpdateMaxLines);
    }

자세히 보면 Xamarin일 때도 MaxLine을 주는게 있었는데 그 때는 버전이 낮고 Maxline이 안나와서 커스텀렌더러로 주고 별도의 컨트롤을 만들었던걸로 기억합니다.

 

근데..이건 있는데... 무튼 해결 끝!

 

 

단톡방에 참여하시고 싶으신 분은

 

https://open.kakao.com/o/g8lzoOm