gpt4 book ai didi

ios - 效果 "Label.AdjustsFontSizeToFitWidth"没有效果,而其他效果有效

转载 作者:行者123 更新时间:2023-11-29 11:39:12 27 4
gpt4 key购买 nike

本文提到的Xamarin效果我试过了:

https://smstuebe.de/2016/08/29/underlinedlabel.xamarin.forms/

(源自 this stackoverflow 问题)。

它工作得很好。

但是,当我改为尝试应用标签效果“AdjustsFontSizeToFitWidth”时,它根本不起作用。

为了对此进行测试,我将同一示例代码中的字体大小设置为 300,并更改了这些行

            var label = (UILabel)Control;
var text = (NSMutableAttributedString)label.AttributedText;
var range = new NSRange(0, text.Length);

这些行:

            var label = (UILabel)Control;
var text = (NSMutableAttributedString)label.AttributedText;
var range = new NSRange(0, text.Length);
label.Lines = 1;
label.MinimumFontSize = 6;
label.AdjustsFontSizeToFitWidth = true;

我已经在模拟器中使用 iPhone iPhone 6 iOS 11.1 和 iPhone X iOS 11.1 对其进行了测试。

此属性是否有某些特殊之处使其无法用于 Xamarin 效果,或者此效果是否可能仅适用于真实设备?

最佳答案

您需要确保在 Label 上设置了截断行,否则普通的 iOS LabelRenderer 将设置 Lines属性设置为 0(即无限多行),因此无需调整大小,因为整个控件的大小已调整为文本大小。此外,您不能通过 Effect 设置 Lines,因为路由效果发生在渲染器设置其属性之前,它会重置为 0;

设置 LineBreakMode 属性:

<Label Text="Welcome to SizeToFitEffects, SizeToFitEffects, SizeToFitEffects, SizeToFitEffects"
LineBreakMode="TailTruncation">
<Label.Effects>
<sushi:LabelSizeToFitEffect />
</Label.Effects>
</Label>

在效果中,明智的做法是将 MinimumScaleFactor 设置为合理的值,否则您最终可能会得到一个小到无法阅读的字体。

public class LabelSizeToFitEffect : PlatformEffect
{
protected override void OnAttached()
{
SetSizeToFit(true);
}

protected override void OnDetached()
{
SetSizeToFit(false);
}

void SetSizeToFit(bool sizeToFit)
{
var label = Control as UILabel;
label.AdjustsFontSizeToFitWidth = sizeToFit;
label.MinimumScaleFactor = 0.33f;
}
}

关于ios - 效果 "Label.AdjustsFontSizeToFitWidth"没有效果,而其他效果有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47541407/

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