我目前有以下代码来设置密码文本字段:
self.passwordTextField = [UITextField new];
self.passwordTextField.placeholder = @"Password";
self.passwordTextField.font = [UIFont systemFontOfSize:18.f];
self.passwordTextField.secureTextEntry = YES;
self.passwordTextField.returnKeyType = UIReturnKeyDone;
self.passwordTextField.delegate = self;
self.passwordTextField.backgroundColor = [UIColor colorWithRed:255 green:255 blue:255 alpha:0.64];
self.passwordTextField.layer.borderColor = [[UIColor lightGrayColor] CGColor];
self.passwordTextField.layer.borderWidth = 1.0f;
CGFloat textFieldHeight = 45.f;
CGFloat textFieldWidth = 300.f;
self.passwordTextField.frame = CGRectMake(DIALOG_VIEW_WIDTH/2.f - textFieldWidth / 2.f, 240.f, textFieldWidth, textFieldHeight);
UIImageView *icon = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"text-input-icon-password-key.png"]];
icon.frame = CGRectMake(0, 0, 45.f, 45.f);
icon.backgroundColor = [UIColor lightGrayColor];
self.passwordTextField.leftView = icon;
self.passwordTextField.leftViewMode = UITextFieldViewModeAlways;
[self.dialogView addSubview:self.passwordTextField];
这给了我这个:
但是,我想在占位符文本的左侧和显示图标的 ImageView 的右侧添加一些更透明的填充。知道如何做到这一点吗?
更新:感谢您的回复。最后,我通过为整个对象创建一个 UIView,为图标创建一个 UIImageView,为文本创建一个嵌入另一个 UIView 的 UITextField 来实现这一点。结果如下:
最佳答案
“更新:感谢您的回复。我最终通过为整个对象创建一个 UIView 并为图标创建一个 UIImageView 并为文本在另一个 UIView 中嵌入一个 UITextField 来实现这一点。”
您可以继续使用 UITextField
的 leftView
属性,例如:
UIView *vwContainer = [[UIView alloc] init];
[vwContainer setFrame:CGRectMake(0.0f, 0.0f, 50.0f, 45.0f)];
[vwContainer setBackgroundColor:[UIColor clearColor]];
UIImageView *icon = [[UIImageView alloc] init];
[icon setImage:[UIImage imageNamed:@"text-input-icon-password-key.png"]];
[icon setFrame:CGRectMake(0.0f, 0.0f, 45.0f, 45.0f)];
[icon setBackgroundColor:[UIColor lightGrayColor]];
[vwContainer addSubview:icon];
[self.passwordTextField setLeftView:vwContainer];
[self.passwordTextField setLeftViewMode:UITextFieldViewModeAlways];
关于ios - 如何使用图标向 UITextField 添加填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22326288/