如果您正在开发一个.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