如何创建一个有界的UILabel?

时间:2016-11-16 15:58:33

标签: ios xamarin.ios

我试图在iOS上创建一个有界的UILabel。到目前为止,我在SO和其他网站上阅读了很多关于如何做到这一点的内容。但即使我能够使边界工作,我也无法使填充(插入)工作。它可能与我的XCode布局有关,或者我真的不知道......

这里是没有插入的当前结果:

enter image description here

这是生成该代码的代码:

SelectedServiceLabel.Font = Tools.Style.GetFont(Tools.Style.FontStyle.Regular, 15);
SelectedServiceLabel.TextColor = Tools.Style.PrimaryColor;
SelectedServiceLabel.Layer.BorderColor = Tools.Style.PrimaryColor.CGColor;
SelectedServiceLabel.Layer.CornerRadius = 3;
SelectedServiceLabel.Layer.MasksToBounds = true;
SelectedServiceLabel.Layer.BorderWidth = 1;

这里使用insets的结果:

enter image description here

以下是代码:

与上述相同:

(SelectedServiceLabel as UIPaddedLabel).Insets = new UIEdgeInsets(1, 2, 1, 2);

UIPaddedLabel派生自PaddedLabel:

public class PaddedLabel : UILabel
{
    public PaddedLabel(IntPtr handle) : base (handle){}

    public UIEdgeInsets Insets { get; set; }

    public override void DrawText(CGRect rect)
    {
        base.DrawText(Insets.InsetRect(rect));
    }
}

这些实现我从SO的答案中获得。

所以我的问题是......我怎样才能创建一个实际上将文本完全保留在边框内的边界UILabel?我在这里做错了什么?

谢谢!

0 个答案:

没有答案