2017-09-26 32 views
0

我添加填充到的UILabel设置填充到的UILabel作物字符

public partial class MessageLabel : UILabel 
    { 
     public MessageLabel(IntPtr handle) : base(handle) 
     { 
     } 

     public override void DrawText(CoreGraphics.CGRect rect) 
     { 
      UIEdgeInsets insets = new UIEdgeInsets() { Bottom = 5, Top = 5, Left = 5, Right = 5 }; 
      base.DrawText(insets.InsetRect(rect)); 
     } 
    } 

填充加好,但最后一行被裁剪,因为我增加了额外的空白......如果我increate高度10在这种方法中,填充仅添加在标签的顶部。

与垫衬屏幕1 - 看起来不错,但缺的词: enter image description here

没有passings屏幕2 - 显示整个消息: enter image description here

任何解决方案?

+0

是否使用numberOfLines = 0? –

+0

@DanielQ是的,我做的 – Nininea

+0

由@DanielQ提供的解决方案在iOS上工作,但是xamarin.ios有问题,我得到了与您所描述的相同的测试结果,以适应此问题,也许您应该设置高度手动根据文本内容。 'CGSize size = label.Text.StringSize(label.Font,new CGSize(widthConstraint.Constant - 50,9999),UILineBreakMode.WordWrap); heightConstraint.Constant = size.Height;' –

回答

0

试试这个:

private var topInset: CGFloat = 5 
    private var bottomInset: CGFloat = 5 
    private var leftInset: CGFloat = 5 
    private var rightInset: CGFloat = 5 

    override func drawTextInRect(rect: CGRect) { 

     let insets = UIEdgeInsets(top: topInset, left: leftInset, bottom: bottomInset, right: rightInset) 
      super.drawTextInRect(UIEdgeInsetsInsetRect(rect, insets)) 
     } 

override public var intrinsicContentSize: CGSize { 
    var intrinsicSuperViewContentSize = super.intrinsicContentSize 
    intrinsicSuperViewContentSize.height += topInset + bottomInset 
    intrinsicSuperViewContentSize.width += leftInset + rightInset 
    return intrinsicSuperViewContentSize 
} 
+0

我需要填充UILabel至少5像素 – Nininea

+0

我编辑了我的答案。 –

+0

认真吗?你认为你的回答和我的问题有什么不同吗? :( – Nininea