gpt4 book ai didi

ios - 如何在不构造它们的情况下找出给定集合中哪个 UILabel 具有最大宽度?

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:25:27 24 4
gpt4 key购买 nike

  • 我正在构建一个 UITableView,它将具有多个垂直/水平行。
  • 第一行是标题,其余是值。
  • 由于事先不知道单个数据项的最大值(长度),因此无法预测垂直行的最大宽度。
  • 我将提供最小宽度(等于 UILabel 的宽度,它将在第一个水平行中用作标题)并根据给定的数据集评估最大可能值。为此,我必须知道哪些将要创建的标签将具有最大的 IntrinsicSize

问题是,我必须在开始构建我的单元格之前知道该值,这意味着我必须在开始构建之前创建所有标签,所以我必须创建每个标签两次,一次是在构建表格之前(以确定它是否会成为垂直行中最大的表格),一次是实际将其放入自定义 UITableViewCell 中。

  1. 最重要的是,有更好的方法吗?
  2. 如果不是,如何解决必须为每个标签创建两次的低效率问题?

忘记提及,一切都必须通过代码完成,因为我使用的是 Xamarin.iOS 并且它有一个几乎无法使用的 .xib 编辑器。

最佳答案

假设您可以在您的数据集中找到最长 字符串,您可以使用NSString.GetSizeUsingAttributes 获取高度和宽度基于您将用于呈现 UILabelUIFont

var aFont = UIFont.GetPreferredFontForTextStyle(UIFontTextStyle.Body);
var attributes = new UIStringAttributes
{
Font = aFont
};
var rect = (new NSString("The string with the most characters...")).GetSizeUsingAttributes(attributes);
Console.WriteLine($"String width is {rect.Width} when using {aFont.Name}");

如果要向 UILabel 添加边框、填充等,请向结果添加几个像素。

注意:至于你的数据集中最长的字符串是什么,我wing它并且只使用字符数作为指标。是的,与另一个“更长”的字符串相比,使用不成比例的字体可以产生更短的宽度和更多字符的字符串,但替代方法是检查每个字符串的 CGRect 结果,这很少实用或需要...

关于ios - 如何在不构造它们的情况下找出给定集合中哪个 UILabel 具有最大宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42206545/

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