我如何获得这样的TextField

时间:2016-09-27 10:09:26

标签: ios objective-c uitextfield

我已经检查了UITextField的属性,并尝试为其设计,如下所示。但我没有成功。

enter image description here

我想再添加一个UIView来获得它周围的黑色暗色。但我不知道UITextField中是否存在任何属性。

如何获得与上述相同的设计我需要做什么。

更新:这是我的代码

    self.txtUserName = [[UITextField alloc]initWithFrame:CGRectMake(Padding, height/3.5, width - (Padding*2), TextFieldHeight)];
    self.txtUserName.backgroundColor = [UIColor whiteColor];
    self.txtUserName.textColor = [UIColor whiteColor];
    self.txtUserName.borderStyle = UITextBorderStyleRoundedRect;
    [self.txtUserName.layer setBorderColor: [[[UIColor grayColor] colorWithAlphaComponent:0.5] CGColor]];
    [self.txtUserName.layer setBorderWidth: 5.0];
    [self.txtUserName.layer setCornerRadius:5];

感谢您的时间。

编辑:我有图形资源,我想以编程方式使用它们。

4 个答案:

答案 0 :(得分:2)

界面生成器:

步骤01 - 添加容器视图:添加两个视图(并设置合适的约束)并将它们连接到ViewController -as IBOutlets-: enter image description here

步骤02 - 添加背景渐变imageViews :添加" ImageView"在每个容器中(或"视图"如果你想以编程方式而不是图像创建渐变,我建议你这样做),然后设置为它们设置渐变图像,不要忘记设置适合他们的限制;最后,将它们连接到ViewController -as IBOutlets-: enter image description here

步骤03 - 添加文本字段:添加" TextField"在每个" ImageView"之上,它们应该与背景ImageViews的大小相同。确保将TextFields边框样式从属性检查器更改为无边框:

enter image description here

为它们设置合适的约束,最后,将它们连接到ViewController - 作为IBOutlets - :

enter image description here

<强>编码: 现在,您需要在&#34; ViewDidLoad&#34;:

中添加这些行
override func viewDidLoad() {
    super.viewDidLoad()

    // adding corner radius to the container views:
    viewUsernameContainer.layer.cornerRadius = 5
    viewPasswordContainer.layer.cornerRadius = 5

    // adding corner radius to the background imageviews:
    imgUsernameBackground.clipsToBounds = true
    imgUsernameBackground.layer.cornerRadius = 5
    imgPasswordBackground.clipsToBounds = true
    imgPasswordBackground.layer.cornerRadius = 5
}

运行应用程序,它应该如下所示:

enter image description here

&#34;验证&#34;边界?您可以为选中的文本字段添加这些代码行(为背景ImageView添加边框):

// adding border to the username background ImageView
imgUsernameBackground.layer.borderWidth = 2
// whatever color you want...
imgUsernameBackground.layer.borderColor = UIColor.black.cgColor

最后,它应该是这样的:

enter image description here

当然,您可以使用尺寸,边框宽度和渐变样式来使其看起来更适合您的应用。

振作起来!

答案 1 :(得分:1)

您需要将UITextFields添加为单独的UIViews

的子视图

UIView背景颜色设置为:

backView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5]

然后使用以下方法设置边缘舍入:

backView.clipsToBounds = YES;
backView.layer.cornerRadius = 4.0;

对于UITextFields,您还可以设置剪裁和转角半径。如果你还想要红线使用类似的东西:

textView.layer.borderWidth = 2.0;
textView.layer.borderColor = [UIColor redColor];

答案 2 :(得分:0)

  1. 添加两个单独的UIView

    UIView

  2. 对于TextFields.Change其背景颜色为灰色。

  3. 在UIView上放置文本字段。

  4. 并且对于黄色,更改ViewControllers背景颜色。
  5. 你去了

    希望这会有帮助

答案 3 :(得分:0)

您可以像我在这里一样设计UITextField上的UImageView

我的代码:

UIImageView *imgVw = [[UIImageView alloc] initWithFrame:CGRectMake(20, 100, [UIScreen mainScreen].bounds.size.width - 40, 50)];
imgVw.backgroundColor = [UIColor colorWithWhite:0.2 alpha:0.4];
imgVw.layer.cornerRadius = 5.0;
imgVw.userInteractionEnabled = YES;
[self.view addSubview:imgVw];

UIView *leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10, 10)];

UITextField *txtFld = [[UITextField alloc] initWithFrame:CGRectMake(5, 5, CGRectGetWidth(imgVw.frame) - 10, CGRectGetHeight(imgVw.frame) - 10)];
txtFld.leftView = leftView;
txtFld.leftViewMode = UITextFieldViewModeAlways;
txtFld.delegate = self;
txtFld.layer.borderColor = [UIColor redColor].CGColor;
txtFld.layer.borderWidth = 2.0;
txtFld.layer.cornerRadius = 5.0;
[imgVw addSubview:txtFld];

输出:

enter image description here

我已经给出了一些虚拟颜色代码,你可以相应地进行设计。 希望它有所帮助

快乐的编码......