Nul*_*sis 3 xamarin.ios xamarin
我已经设置了我的UITextField的LeftView,这样我就可以在文本旁边画一个小图标了.
Password.LeftView = new UIImageView(UIImage.FromBundle("LockAndKey"));
Password.LeftViewMode = UITextFieldViewMode.Always;
Run Code Online (Sandbox Code Playgroud)
这很好但现在的问题是占位符和实际文本太靠近图像了 - 我想缩进文本.
在Xamarin/iOS中我需要做什么才能使我的子类UITextField以缩进的方式缩进文本?我知道我可以覆盖各种功能但到目前为止还没有成功使用它.
谢谢!
您需要扩展/子类化UITextField类并覆盖调用的方法DrawText.在那里你添加你需要的填充.
public override void DrawText(CGRect rect)
{
var padding = new UIEdgeInsets (0, 10, 0, 0);
base.DrawText( padding.InsetRect(rect));
}
Run Code Online (Sandbox Code Playgroud)
这将在左侧添加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;
Run Code Online (Sandbox Code Playgroud)
使用此配置,您将在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);
}
Run Code Online (Sandbox Code Playgroud)
这个更干净,作为第一个解决方案,您可以自定义它.
| 归档时间: |
|
| 查看次数: |
1406 次 |
| 最近记录: |