UITextField使用故事板设置边框颜色

kat*_*tit 16 storyboard uitextfield ios

如果可能的话,我想使用故事板设置边框颜色.我在这里看到了答案:UITextField边框颜色

然后我在故事板中回答: 在此输入图像描述

设置了所有属性,但TextField不显示边框.有什么建议?

Mar*_*kus 13

正如Bogdan指出的那样,你可以通过简单的子类化和几位代码来做到这一点.之后,一切都将在Storyboards中编辑.

  1. 子类UITextField
  2. 创建两个属性,一个用于边框宽度,另一个用于边框颜色
  3. 使那些变量IBInspectable和整个IBISignign类
  4. 您将能够更改边框的颜色和宽度,并实时查看更改.

插图代码(Swift 3.1):

@IBDesignable
class FormTextField: UITextField {

    @IBInspectable var borderColor: UIColor? {
        didSet {
            layer.borderColor = borderColor?.cgColor
        }
    }

    @IBInspectable var borderWidth: CGFloat = 0 {
        didSet {
            layer.borderWidth = borderWidth
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:您将在属性检查器中看到这一点

属性检查员


Ram*_*sad 7

正如Bogdan指出的那样,你无法在storyboard中找到layer.borderColor属性,因为它是一个运行时的东西.

但是你仍然可以在任何视图(或UIView Subclass)上使用IB_DESIGNABLE 设置borderColor并进行一些编码.

以下是如何实现它的步骤,

  1. 在CALayer类上创建一个类别.使用合适的名称声明UIColor类型的属性,我将其命名为borderUIColor.
  2. 为此属性编写setter和getter.
  3. 在'Setter'方法中,只需将图层的"borderColor"属性设置为新颜色CGColor值.
  4. 在'Getter'方法中,使用layer的borderColor返回UIColor.

PS:请记住,类别不能存储属性.'borderUIColor'用作计算属性,作为实现我们所关注的内容的参考.

请看下面的代码示例;

目标C:

接口文件:

#import <QuartzCore/QuartzCore.h>
#import <UIKit/UIKit.h>

@interface CALayer (BorderProperties)

// This assigns a CGColor to borderColor.
@property (nonatomic, assign) UIColor* borderUIColor;

@end
Run Code Online (Sandbox Code Playgroud)

实施档案:

#import "CALayer+BorderProperties.h"

@implementation CALayer (BorderProperties)

- (void)setBorderUIColor:(UIColor *)color {
    self.borderColor = color.CGColor;
}

- (UIColor *)borderUIColor {
    return [UIColor colorWithCGColor:self.borderColor];
}

@end
Run Code Online (Sandbox Code Playgroud)

Swift 3.1:

extension CALayer {
    var borderUIColor: UIColor {
        set {
            self.borderColor = newValue.cgColor
        }

        get {
            return UIColor(cgColor: self.borderColor!)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

最后转到你的故事板/ XIB,按照剩下的步骤;

  1. 单击要为其设置边框颜色的View对象.
  2. 单击"Utility"(屏幕右侧)面板中的"Identity Inspector"(左起第3位).
  3. 在"用户定义的运行时属性"下,单击"+"按钮以添加密钥路径.
  4. 将键路径的类型设置为"颜色".
  5. 输入键路径的值为"layer.borderUIColor".[记住这应该是你在类别中声明的变量名,而不是borderColor,这里是borderUIColor ].
  6. 最后选择你想要的任何颜色.

编辑:您必须将layer.borderWidth属性值设置为至少1才能看到边框颜色.

构建并运行.快乐的编码.:)


小智 3

我不确定您可以更改故事板中 UITextfield 的边框颜色。您可以通过以下方式以编程方式更改它:

UITextField *myTextField = (UITextField *)[self.view viewWithTag:1];
myTextField.borderStyle = UITextBorderStyleLine;
myTextField.layer.borderWidth = 2;
myTextField.layer.borderColor = [[UIColor redColor] CGColor];
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。