【问题标题】:Dynamic width of collection view cell - Xamarin iOS集合视图单元格的动态宽度 - Xamarin iOS
【发布时间】:2017-09-25 12:47:16
【问题描述】:

我想让单元格宽度相对于其内容动态。我已经尝试通过计算标签宽度然后将其分配给单元格框架但无法实现这一点,因为标签没有返回它的实际宽度。

public void UpdateCell(string text)
{
    label.Text =  text;
    this.ContentView.Frame = new CoreGraphics.CGRect(0, 0, label.Frame.Width, this.ContentView.Frame.Height);
}

【问题讨论】:

  • 我认为你应该在正确的地方调整内容视图的大小,参考这里:forums.xamarin.com/discussion/72296/…
  • 我已经检查过了,但是我的情况不同我知道如果我将代码放入委托类的 GetSize 方法中,单元格大小会反映变化,但我只会给这个方法提供静态值,因为我无法访问我从这里的观点

标签: ios xamarin xamarin.ios


【解决方案1】:

您可以使用 NSString 的GetSizeUsingAttributes 来计算字符串的CGRect,然后您可以使用该CGRect 来检索宽度:

using (var labelString = new NSString(label.Text))
{
    var size = labelString.GetSizeUsingAttributes(new UIStringAttributes() { Font = label.Font });
    ContentView.Frame = new CGRect(0, 0, size.Width, ContentView.Frame.Height);
}

【讨论】:

  • 我已经更新了代码,我还检查了这个函数是否返回了不同的值,但我的单元格仍然没有反映不同的宽度