条目渲染不在iOS Xamarin Forms中添加下划线

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了条目渲染不在iOS Xamarin Forms中添加下划线相关的知识,希望对你有一定的参考价值。

我有一个Xamarin Forms和android的条目,它默认显示下划线,当我测试ios时,它总是有一个像这样的矩形:

enter image description here

我希望它就像在Android中一样:

enter image description here

我使用自定义渲染,我指定我想要一个下划线,但它仍然显示在一个矩形。此代码不起作用:

class MyEntryRenderer : EntryRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
    {
        base.OnElementChanged(e);

        if (Control != null)
        {             
            Control.BorderStyle = UITextBorderStyle.Line;                
        }
    }
}

我用下一个代码解决了这个问题:

class MyEntryRenderer : EntryRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
    {
        base.OnElementChanged(e);

        if (Control != null)
        {             
            Control.BorderStyle = UITextBorderStyle.None;

            //Create borders(bottom only)
            CALayer border = new CALayer();
            float width = 2.0f;               
            border.BorderColor = Color.FromHex(ColorConstants.BlueHex).ToCGColor();
            border.Frame = new CGRect( 0, 40, 400, 2.0f);
            border.BorderWidth = width;

            Control.Layer.AddSublayer(border);
            Control.Layer.MasksToBounds = true;
        }
    }
}

但是,仍然不明白为什么以前的代码不起作用,应该很简单。有任何想法吗?

答案

https://developer.xamarin.com/api/type/UIKit.UITextBorderStyle/

UITextBorderStyle的枚举值是BezelLineNoneRoundedRect。所有这些(None除外)只是描述围绕整个UITextView的边界样式,因此Line值并不意味着一条线,它意味着围绕整个视图的实线矩形,而不是一个边框或圆角矩形。

以上是关于条目渲染不在iOS Xamarin Forms中添加下划线的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin Forms WinRT 条目自定义渲染器

Xamarin.Forms 仅在一个平台 (iOS) 上更改条目的占位符颜色和文本颜色

Xamarin Forms - iOS 上的键盘覆盖条目(文本字段)

Xamarin Forms Webview html 视频不在 iOS 设备上播放

我们如何处理 Xamarin Forms Picker 的完成按钮单击事件?

MvvmCross 与 Xamarin.Forms 和自定义 iOS 渲染器 - 防止导航滑动 iOS - MasterDetail