作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
UITableView
,它将具有多个垂直/水平行。 UILabel
的宽度,它将在第一个水平行中用作标题)并根据给定的数据集评估最大可能值。为此,我必须知道哪些将要创建的标签将具有最大的 IntrinsicSize
。 问题是,我必须在开始构建我的单元格之前知道该值,这意味着我必须在开始构建之前创建所有标签,所以我必须创建每个标签两次,一次是在构建表格之前(以确定它是否会成为垂直行中最大的表格),一次是实际将其放入自定义 UITableViewCell
中。
忘记提及,一切都必须通过代码完成,因为我使用的是 Xamarin.iOS
并且它有一个几乎无法使用的 .xib
编辑器。
最佳答案
假设您可以在您的数据集中找到最长 字符串,您可以使用NSString.GetSizeUsingAttributes
获取高度和宽度基于您将用于呈现 UILabel
的 UIFont
。
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/
我是一名优秀的程序员,十分优秀!