根据Xamarin IOS中的文本大小调整标签

时间:2014-08-12 09:47:18

标签: c# ios xamarin uilabel

根据文字自动调整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显示的区域可以包含多行时间   用户点击文本视图,出现键盘;当用户点击返回时   键盘,键盘消失,文本视图可以处理   以特定于应用程序的方式输入。您可以指定属性等   如字体,颜色和对齐方式,适用于文本视图中的所有文本。

enter image description here

以上我正在使用的文字。它需要自动调整以显示内容。

2 个答案:

答案 0 :(得分:3)

已解决以下代码

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);

enter image description here

答案 1 :(得分:1)

以下是我用于根据内容调整标签高度大小的代码段

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;
        }