在 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:滚动视图中的自动布局?

Xamarin iOS Autolayout:自动调整各种设备的宽度和垂直滚动,同时保持水平滚动禁用演示链接

自定义标签渲染器在 Xamarin iOS 的滚动列表视图中显示错误的文本样式

根据标签长度调整从 xib 创建的视图大小

如何根据标签可用的高度调整 UILabel 字体大小

iOS7 - 调整多行标签的字体大小以适合其框架