收集视图单元格的动态宽度 - Xamarin iOS
问题描述:
我想使单元格宽度相对于其内容是动态的。我试过计算标签宽度,然后将其分配给单元框架,但无法达到此目的,因为标签没有返回实际宽度。收集视图单元格的动态宽度 - Xamarin iOS
public void UpdateCell(string text)
{
label.Text = text;
this.ContentView.Frame = new CoreGraphics.CGRect(0, 0, label.Frame.Width, this.ContentView.Frame.Height);
}
答
可以使用的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);
}
+0
我已经更新了代码,我也检查过这个函数返回的是其内容的不同值,但是我的单元格仍然没有反映出不同的宽度 – Hasan
我想你应该调整内容查看在正确的位置,参考这里:https://forums.xamarin.com/discussion/72296/collectionview-cell-width-is-not-changing-on-different-screen-sizes –
我已经检查过,但我的情况是不同的,我知道如果我将代码放在委托类的GetSize方法中,单元大小反映了一个变化,但我只会给出静态值t o这种方法,因为我不能从这里访问我的意见 – Hasan