在 Xamarin IOS 中根据文本大小调整标签
Posted
技术标签:
【中文标题】在 Xamarin IOS 中根据文本大小调整标签【英文标题】:Adjust Label based on text size in Xamarin IOS 【发布时间】:2014-08-12 09:47:18 【问题描述】:根据文本自动调整 UILabel 大小。
lbl_genericIndicators.Font = UIFont.FromName (KHELVETIC, KFontSize12);
float width = View.Frame.Size.Width-20;
SizeF size = ((NSString)lbl_genericIndicators.Text).StringSize(lbl_genericIndicators.Font,constrainedToSize:new SizeF(width,100),
lineBreakMode:UILineBreakMode.WordWrap);
var labelFrame = lbl_genericIndicators.Frame;
labelFrame.Size = new SizeF(width,size.Height);
lbl_genericIndicators.Frame = new RectangleF (10, 128, size.Width,size.Height);
以下是示例文本:
UITextView 显示的区域可以包含多行When a 用户点击文本视图,出现键盘;当用户点击 Return in 键盘,键盘消失,文本视图可以处理 以特定于应用程序的方式输入。您可以指定属性,例如 作为字体、颜色和对齐方式,适用于文本视图中的所有文本。
例如,我使用的上述文本。它需要自动调整以显示内容。
【问题讨论】:
【参考方案1】:通过以下代码解决
lbl_genericIndicators.Font = UIFont.FromName (KHELVETIC, KFontSize12);
lbl_genericIndicators.BackgroundColor = UIColor.Red;
lbl_genericIndicators.TextAlignment = UITextAlignment.Justified;
float width = View.Frame.Size.Width-20;
SizeF size=((NSString)lbl_genericIndicators.Text).StringSize(lbl_genericIndicators.Font,constrainedToSize:new SizeF(width,100),lineBreakMode:UILineBreakMode.WordWrap);
var labelFrame = lbl_genericIndicators.Frame;
labelFrame.Size = new SizeF(width,size.Height);
lbl_genericIndicators.Lines = int.Parse((lbl_genericIndicators.Text.Length / 40).ToString()) + 1;
lbl_genericIndicators.Frame = new RectangleF (10, 128, size.Width,size.Height);
【讨论】:
【参考方案2】:这是我用来根据内容调整标签高度的代码 sn-p
void ChangeLabelHeigthWithText(UITextView label,float maxHeight = 100f)
float width = label.Frame.Width;
SizeF size = ((NSString)label.Text).StringSize(label.Font,constrainedToSize:new SizeF(width,maxHeight),
lineBreakMode:UILineBreakMode.WordWrap);
var labelFrame = label.Frame;
labelFrame.Size = new SizeF(width,size.Height);
label.Frame = labelFrame;
【讨论】:
以上是关于在 Xamarin IOS 中根据文本大小调整标签的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin iOS Autolayout:自动调整各种设备的宽度和垂直滚动,同时保持水平滚动禁用演示链接