gpt4 book ai didi

xamarin - 使用自定义渲染器,我可以使TableSection.Title以小写混合大小写出现吗?

转载 作者:行者123 更新时间:2023-12-04 04:24:11 26 4
gpt4 key购买 nike

这是我目前拥有的:

<TableView Intent="Settings">
<TableRoot>
<TableSection>
<TableSection.Title>
This appears in uppercase
</TableSection.Title>

iOS自定义渲染器是否可以通过某种方式将显示的字体转换为大小写混合的字体,并减小字体大小,例如在“设置”>“控制中心”中看到Apple用户?

最佳答案

对于iOS,您需要具有UITableView原生控件的XF TableView TableViewRenderer。更多内容:

https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/custom-renderer/renderers/

下面是解决方案。函数Draw的渲染器中的代码应在OnElementChanged中完成,但不幸的是,Xamarin似乎有一个https://bugzilla.xamarin.com/show_bug.cgi?id=58731错误另一个问题是,文本转换或https://bugzilla.xamarin.com/show_bug.cgi?id=58732均不起作用

另一项小型优化-避免每次添加控件绘制的textDecapitalized时都在渲染器中进行文本转换。
回答另一个问题,如何更改文本大小,我添加了hv.TextLabel.Font集(注释掉,但可以正常工作)。

因此,解决以下两个错误:

XML

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:ButtonRendererDemo;assembly=ButtonRendererDemo"
x:Class="ButtonRendererDemo.CustomTablePage">

<ContentPage.Content>
<local:CustomTableView Intent="Settings">
<TableRoot>
<TableSection Title="First Case Sensitive Header">
<SwitchCell Text="New Voice Mail" />
</TableSection>
<TableSection Title="Second Case Sensitive Header">
<SwitchCell Text="New Mail" On="true" />
</TableSection>
</TableRoot>
</local:CustomTableView>
</ContentPage.Content>
</ContentPage>

页面代码
namespace ButtonRendererDemo
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class CustomTablePage : ContentPage
{
public CustomTablePage()
{
InitializeComponent();
}
}

public class CustomTableView : TableView
{

}
}

渲染器
[assembly: ExportRenderer(typeof(CustomTableView), typeof(CustomTableViewRenderer))]
namespace ButtonRendererDemo.iOS
{
public class CustomTableViewRenderer : TableViewRenderer
{
bool textDecapitalized = false;

public override void Draw(CGRect rect)
{
base.Draw(rect);

if (!textDecapitalized)
{
textDecapitalized = true;

var tableView = Control as UITableView;
var numSections = tableView.NumberOfSections();
for (nint s = 0; s < numSections; s++)
{
var hv = tableView.GetHeaderView(s);
if (hv != null) //always null in OnElementChanged. Bug reported
{
//unfortunately TextInfo doesn't work. Bug reported
//TextInfo textInfo = new CultureInfo("en-US", false).TextInfo;
// OR
//TextInfo textInfo = Thread.CurrentThread.CurrentCulture.TextInfo;

if (hv.TextLabel.Text.ToUpper().StartsWith("FIR"))
hv.TextLabel.Text = "First Case Sensitive Header";
else if (hv.TextLabel.Text.ToUpper().StartsWith("SEC"))
hv.TextLabel.Text = "Second Case Sensitive Header";

//hv.TextLabel.Font = UIFont.FromName(hv.TextLabel.Font.Name, 5f);
}
}
}
}
}
}

小字体区分大小写 header 的最终结果

enter image description here

关于xamarin - 使用自定义渲染器,我可以使TableSection.Title以小写混合大小写出现吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45622532/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com