将类型从CGSize转换为SizeF

时间:2016-12-22 10:31:01

标签: c# xamarin

尝试使用dinamicly更改标签大小,这取决于文本大小。得到错误: enter image description here

            UILabel addressLabel = new UILabel();
            float labelWidth = (float)addressLabel.Frame.Width;
            SizeF size = ((NSString)addressLabel.Text).StringSize(addressLabel.Font, constrainedToSize: new SizeF(labelWidth, 100),
                    lineBreakMode: UILineBreakMode.WordWrap);
            var labelFrame = addressLabel.Frame;
            labelFrame.Size = new SizeF(labelWidth, size.Height);
            addressLabel.Frame = labelFrame;

我怎么能转换这个?

1 个答案:

答案 0 :(得分:2)

如错误所述,您可以使用显式转换将<MvxListView android:layout_width="fill_parent" android:layout_height="wrap_content" app:MvxItemTemplate="@layout/my_listitem" app:MvxBind="ItemsSource Items; ItemClick ClickCommand" /> 转换为CGSize。您可以在Xamarin documentation

中检查此转化是否存在
SizeF

您也可以手动转换它。您可以看到SizeF size = ( SizeF )((NSString)addressLabel.Text).StringSize( addressLabel.Font,                 constrainedToSize: new SizeF(labelWidth, 100), lineBreakMode: UILineBreakMode.WordWrap); 具有CGSizeHeight属性,与Width相同。你能做的是:

SizeF

请注意,CGSize sizeOfString = ((NSString)addressLabel.Text).StringSize( addressLabel.Font, constrainedToSize: new SizeF(labelWidth, 100), lineBreakMode: UILineBreakMode.WordWrap); SizeF size = new SizeF( ( float )sizeOfString.Width, ( float )sizeOfString.Height ); 是iOS类型并使用CGSize代替nfloat,因此您需要手动执行转换为float