Xamarin.ios 为Monotouch对话框元素设置自定义字体

Xamarin.ios 为Monotouch对话框元素设置自定义字体,xamarin.ios,monotouch.dialog,Xamarin.ios,Monotouch.dialog,当Monotouch对话框类已实例化时,是否有方法设置字体 [Section("This is the header")] 这将使用默认的带阴影的蓝色文本进行渲染,但我找不到设置字体的位置。有没有办法覆盖它使用的字体和颜色?当您像这样使用该部分时,您将使用UITableView标准渲染 改变这种情况的唯一方法是使用元素API而不是反射API,并提供一个UIView,您可以在其中自己绘制数据的内容。我为那些希望替换整个解决方案中所有节头的人找到了一个解决方案。在MonoTouch.Dialog中

当Monotouch对话框类已实例化时,是否有方法设置字体

[Section("This is the header")]

这将使用默认的带阴影的蓝色文本进行渲染,但我找不到设置字体的位置。有没有办法覆盖它使用的字体和颜色?

当您像这样使用该部分时,您将使用UITableView标准渲染


改变这种情况的唯一方法是使用元素API而不是反射API,并提供一个UIView,您可以在其中自己绘制数据的内容。

我为那些希望替换整个解决方案中所有节头的人找到了一个解决方案。在
MonoTouch.Dialog
中,有一个名为
DialogViewController
的类,用于使用反射API创建视图。在这里,有一个方法叫做
GetViewForHeader()
。您可以创建一个自定义标签并将其发回,而不是只发回普通的
部分.HeaderView

public override UIView GetViewForHeader (UITableView tableView, int sectionIdx)
{
    var section = Root.Sections [sectionIdx];
    if (!string.IsNullOrEmpty(section.Caption))
    {
        var label = new UILabel();
        label.BackgroundColor = UIColor.FromRGB(89, 41, 17);
        label.TextColor = UIColor.FromRGB(255, 206, 52);
        label.ShadowColor = UIColor.Black;
        label.ShadowOffset = new SizeF(0, 1f);
        label.Font = UIFont.FromName("TitlingGothicFB Cond", 20);

        label.Text = section.Caption;

        return label;
    }
    return section.HeaderView;
}

public override float GetHeightForHeader (UITableView tableView, int sectionIdx)
{
    if (!string.IsNullOrEmpty(section.Caption))
        return 40f;
    return -1;
}

请记住手动或通过从标签获取高度来设置高度。您也可以创建自定义的
ui视图
,但标签对我来说已经足够了。

auch。我已经有相当多的反射类和几个头。不过,它们都需要相同的字体和颜色。是否真的没有办法更改标题字体和颜色,即使我希望它们都是相同的?您可以修改源代码,并使其使接受字符串的构造函数实际创建视图并将其传递给另一个构造函数。