您需要擴展/繼承UITextField類並覆蓋名爲DrawText
的方法。在那裏你添加你需要的填充。
public override void DrawText(CGRect rect)
{
var padding = new UIEdgeInsets (0, 10, 0, 0);
base.DrawText(padding.InsetRect(rect));
}
這將在左側添加10點填充。
爲了讓它更具可定製性,我會添加一個名爲Padding的屬性,其中基本上可以根據情況設置所需的填充。
*更新#1 *
在你想擁有的空間,同時打字,你可以只讓代表您LeftView大一點的寬度的UIImageView並與ViewContentMode
發揮的情況下用你的例子:
var leftView = new UIImageView(UIImage.FromBundle("LockAndKey"));
leftView.Frame = new CGRect (leftView.Frame.X, leftView.Frame.Y, leftView.Frame.Width + 15, leftView.Frame.Height);
leftView.ContentMode = UIViewContentMode.Center;
Password.LeftView = leftView
Password.LeftViewMode = UITextFieldViewMode.Always;
有了這個配置,你將在每個ImageView的大小上得7.5分。您可以使用其他ContentMode使其工作,只要你願意。
****更新#2 ****
剛剛發現的另一種方式。
在子類中重寫的UITextField這兩種方法:
public override CGRect TextRect (CGRect forBounds)
{
var padding = new UIEdgeInsets (0, 20, 0, 0);
return base.TextRect (padding.InsetRect(forBounds));
}
public override CGRect EditingRect (CGRect forBounds)
{
return TextRect (forBounds);
}
這一個是清潔,作爲第一個解決方案,您可以自定義。
這對我輸入後的文本有效,但不是佔位符,或者當我輸入時。是否有額外的覆蓋,我可以爲那些?:)非常感謝花時間來幫助我! – NullHypothesis
謝謝!就是這樣! – NullHypothesis