如果可能,我想使用故事板设置边框颜色。我见过的答案在这里:UITextField border colorUITextField使用故事板设置边框颜色
我跟着回答故事板:
所有属性设置,但文本字段不显示边框。有什么建议么?
如果可能,我想使用故事板设置边框颜色。我见过的答案在这里:UITextField border colorUITextField使用故事板设置边框颜色
我跟着回答故事板:
所有属性设置,但文本字段不显示边框。有什么建议么?
我不确定你可以在故事板中更改UITextfield的边框颜色。你可以通过编程方式改变它;
UITextField *myTextField = (UITextField *)[self.view viewWithTag:1];
myTextField.borderStyle = UITextBorderStyleLine;
myTextField.layer.borderWidth = 2;
myTextField.layer.borderColor = [[UIColor redColor] CGColor];
希望这会有所帮助。
@katit - 是否有任何帮助,或者您是否找到了在故事板中执行此操作的方法? – Gismay 2014-10-09 11:22:26
由于layer.borderColor
属性,它不显示任何边框。它是CGColor类型的,运行时属性在默认情况下还不支持,所以只设置一个属性错误,也会禁用其他属性。
要从故事板做,但也涉及一些代码和子类,你可以使用这个方法:
子类的UITextField并作出
IB_DESIGNABLE
的UIColor属性,你会再变成CGColor并应用到self.layer.borderColor
。
正如Bogdan指出的那样,在故事板中找不到layer.borderColor属性是因为它是运行时的事情。
但是,你仍然可以设置borderColor不使用IB_DESIGNABLE,在任何视图(或UIView子类)与一点点的编码。
下面的步骤是如何实现的,
P.S:记住,类别不能有存储性能。 '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
实现文件:
#import "CALayer+BorderProperties.h"
@implementation CALayer (BorderProperties)
- (void)setBorderUIColor:(UIColor *)color {
self.borderColor = color.CGColor;
}
- (UIColor *)borderUIColor {
return [UIColor colorWithCGColor:self.borderColor];
}
@end
夫特3.1:
extension CALayer {
var borderUIColor: UIColor {
set {
self.borderColor = newValue.cgColor
}
get {
return UIColor(cgColor: self.borderColor!)
}
}
}
最后去你的故事板/ XIB,按照其余的步骤;
编辑:您必须设置layer.borderWidth属性值至少为1以查看边框颜色。
构建和运行。 快乐编码。 :)
对于** Swift 3 **,您只需在** Swift 2 **版本中用'cgColor'替换'CGColor'的所有实例。 – CAD97 2017-05-06 18:39:37
这是一个超过@rameswar的答案,我认为这是正确的。由于我们应用UIColor
,我认为这是最好写的,而不是UITextField
延长(UI
东西放在一起):
extension UITextField {
var borderColor : UIColor? {
get {
if let cgcolor = layer.borderColor {
return UIColor(CGColor: cgcolor)
} else {
return nil
}
}
set {
layer.borderColor = newValue?.CGColor
// width must be at least 1.0
if layer.borderWidth < 1.0 {
layer.borderWidth = 1.0
}
}
}
}
运行时性能会再borderColor
(所以你不需要输入layer.
我认为它比borderUIColor
更清洁)。
CALayer
的borderColor
是可选的,所以它是属性。它设置为黑色时nil
最后,layer.borderWidth
它被设置为最低1.0,因为它没有设置其他颜色。
那么Bogdan指出,你可以做到这一点,只需简单的子类和只是几个代码。之后,所有内容都将在Storyboard中进行编辑。
代码说明(雨燕3.1):
@IBDesignable
class FormTextField: UITextField {
@IBInspectable var borderColor: UIColor? {
didSet {
layer.borderColor = borderColor?.cgColor
}
}
@IBInspectable var borderWidth: CGFloat = 0 {
didSet {
layer.borderWidth = borderWidth
}
}
}
编辑:您将在看到这个属性检查器
你可以看到【如何在故事板中添加边框](http://stackoverflow.com/questions/12301256/is-it-possible-to-set-uiview-border-properties-from-interface-builder/ 30348021#30348021) – iHulk 2015-05-20 11:10:41