我正在尝试在Xamarin.iOS应用程序中使用填充创建一个UILabel
。在原生Objective-C的应用程序最流行的解决方案是压倒drawTextInRect
:在Xamarin.iOS中填充UILabel?
- (void)drawTextInRect:(CGRect)rect {
UIEdgeInsets insets = {0, 5, 0, 5};
return [super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)];
}
像这样简单看来,我不能完全弄清楚如何将其翻译为C#。这是我最好的刺吧:
internal class PaddedLabel : UILabel
{
public UIEdgeInsets Insets { get; set; }
public override void DrawText(RectangleF rect)
{
var padded = new RectangleF(rect.X + Insets.Left, rect.Y, rext.Width + Insets.Left + Insets.Right, rect.Height);
base.DrawText(padded);
}
}
这似乎移动标签的文本,但它不调整的标签。
我认为主要问题是我找不到UIEdgeInsetsInsetRect
的Xamarin等价物。
有什么建议吗?
谢谢!这似乎是Objective-C版本的正确翻译。它按预期转移文本,但文本被剪切到右侧。换句话说,'UILabel'不会调整大小以适应插入。不过,这可能是一个单独的问题。 –
该代码只改变图形,所以'UILabel'不知道插入(并且不会改变它的行为)。 – poupou
这是有道理的。在确定标签的宽度时,我应该考虑什么来考虑插入问题?如果可能,我希望它动态调整大小。 –