반응형
MAUI 공부하면서 'MaxLines' 속성과 'LineBreakMode'를 같이 사용 시 속성값이 같이 적용이 안되어 이를 해결한 방법을 공유하고자 한다.
이와 비슷한 경우가 Width값을 잘못 주어 영역 밖으로 나가버리는 경우가 있는데 해당 경우가 아닌 두 가지 속성을 주었는데 '...' 이 발생하지 않은 경우이다.
이렇듯 나와 비슷한 경우를 가진 개발자가 github에 이슈를 올려 해결방법을 받은 링크를 공유한다.
방법
AllowMultiLineTruncation()
private 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);
}
반응형
MauiProgram.cs
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
});
AllowMultiLineTruncation();
return builder.Build();
}
MauiProgram.cs 에서 앱 실행시 AllowMultiLineTruncation() 불러 호출하면 된다.
코드상에 'LineBreakMode' 는 'TailTruncation'이고 'MaxLine'는 '2' 값을 주었을 경우 2줄까지 나오면 끝에 잘리는 부분은 '...'로 대신해서 나온다. 만약, 이전같았으면 한 줄에 끝 부분만 '...' 나왔을 것이다.
아직 MAUI에 자잘한 오류가 있다. 해당 경우에 도움이 되길 바란다.
반응형
'Framework > MAUI' 카테고리의 다른 글
[MAUI] 상대 바인딩 - 상위 항목에 바인딩 (1) | 2022.10.11 |
---|---|
[MAUI] 상대 바인딩 - 자기 자신에게 바인딩 (0) | 2022.10.04 |
[MAUI] 상대 바인딩 (1) | 2022.10.04 |
[MAUI] 바인딩 변환기 매개변수 (0) | 2022.09.30 |
[MAUI] 바인딩 변환기 속성(IValueConverter) (0) | 2022.09.23 |
댓글