删除.net Maui中的入口和拾取器边界
#dotnet #android #ios #dotnetmaui

如果您正在开发一个.NET MAUI应用程序,该应用程序使用了表单元素,例如条目和采摘器,则可能需要为这些字段应用自定义设计。但是,默认情况下,Android&iOS使表单字段按照其平台设计指南显示表单元素UI。在这篇文章中,我将向您展示如何使用简单的自定义处理程序和一些本机代码删除Android&iOS的边界。让我开始!


创建一个静态类FormHandler

using Microsoft.Maui;
using System.Drawing;

#if IOS
using UIKit;
using Foundation;
#endif

namespace DemoApp.Handlers;

public static class FormHandler
{
    public static void RemoveBorders()
    {
        Microsoft.Maui.Handlers.EntryHandler.Mapper.AppendToMapping("Borderless", (handler, view) =>
        {
#if ANDROID
            handler.PlatformView.Background = null;
            handler.PlatformView.SetBackgroundColor(Android.Graphics.Color.Transparent);
#elif IOS
            handler.PlatformView.BackgroundColor = UIKit.UIColor.Clear;
            handler.PlatformView.Layer.BorderWidth = 0;
            handler.PlatformView.BorderStyle = UIKit.UITextBorderStyle.None;
#endif
        });

        Microsoft.Maui.Handlers.PickerHandler.Mapper.AppendToMapping("Borderless", (handler, view) =>
        {
#if ANDROID
            handler.PlatformView.Background = null;
            handler.PlatformView.SetBackgroundColor(Android.Graphics.Color.Transparent);
#elif IOS
            handler.PlatformView.BackgroundColor = UIKit.UIColor.Clear;
            handler.PlatformView.Layer.BorderWidth = 0;
            handler.PlatformView.BorderStyle = UIKit.UITextBorderStyle.None;
#endif
        });
    }
}

在上面共享的代码上,除了删除边框外,我还将表单元素的背景颜色设置为在两个平台上透明,因此您可以自由地根据需要进行样式。

注册处理程序

在Mauipragram.cs文件寄存器上
FormHandler.RemoveBorders();

结论

在.net maui中,您可以实现允许基于每个平台执行代码的静态方法非常容易。当然,如果您愿意避免声明条件,则可以始终使用 .ios.cs .android.cs 文件类命名约定。

感谢您的阅读!在Twitter上关注我 @ivictorhugo