2017-09-25 20 views
1

セルの幅をコンテンツに対して動的にしたい。私は、ラベルの幅を計算して、それをセルフレームに割り当ててみましたが、ラベルが実際の幅を返していないので、これを達成できませんでした。コレクションビューセルの動的な幅 - 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); 
} 
+0

私はあなたが正しい場所にcontentviewのサイズを変更すべきだと思います、ここを参照してください:https://forums.xamarin.com/discussion/72296/collectionview-cell-width-is-not-changing-on-different-screen-sizes –

+0

私はこれをチェックしましたが、私のシナリオは私が知っているものとは異なります私がデリゲートクラスのGetSizeメソッドにコードを置くと、セルのサイズが変化を反映していますが、静的な値tこのメソッドは私がここから私のビューにアクセスすることができないので – Hasan

答えて

0

あなたはその後、CGRectが幅を取得するためにすることを使用することができ、文字列のCGRectを計算するのNSStringのGetSizeUsingAttributesを使用することができます。

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

関連する問題