尝试使用dinamicly更改标签大小,这取决于文本大小。得到错误:
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;
我怎么能转换这个?
答案 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);
具有CGSize
和Height
属性,与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
。