0

编辑#2

根据我得到的回复,我似乎让人们(以及随后的我自己)感到困惑。所以让我们试着把这个问题简化一些——

我希望在给定ViewController的以下内容中提供所有 TextFields:

textField.layer.cornerRadius=8.0f;
textField.layer.masksToBounds=YES;
[[textField layer] setBorderColor:[[UIColor colorWithRed:171.0/255.0 green:171.0/255.0 blue:171.0/255.0 alpha:1.0] CGColor]];
textField.layer.borderWidth= 1.0f;

我应该在哪里实现它以及如何实现它不会给我层属性的错误(即,当我尝试在其中或之后执行此操作时-(void)viewDidLoad,每行都出现错误,指出“在类型的对象上找不到属性'层' ViewController“?

编辑#1 子类代码的完整部分,以帮助识别问题:

@interface InputTextField : UITextField
@end
@implementation InputTextField

- (CGRect)textRectForBounds:(CGRect)bounds {
int margin = 5;
CGRect inset = CGRectMake(bounds.origin.x + margin, bounds.origin.y, bounds.size.width - margin, bounds.size.height);
return inset;
}

- (CGRect)editingRectForBounds:(CGRect)bounds {
int margin = 5;
CGRect inset = CGRectMake(bounds.origin.x + margin, bounds.origin.y, bounds.size.width - margin, bounds.size.height);
return inset;

InputTextField *textField=[[InputTextField alloc]init];
textField.layer.cornerRadius=8.0f;
textField.layer.masksToBounds=YES;
[[textField layer] setBorderColor:[[UIColor colorWithRed:171.0/255.0 green:171.0/255.0 blue:171.0/255.0 alpha:1.0] CGColor]];
textField.layer.borderWidth= 1.0f;
}

@end

原帖

我在更改特定视图控制器中一系列文本字段的边框样式和颜色时遇到问题。我想要调整的视图中有一堆文本字段。他们都被赋予了自定义类“InputTextField”。然而,在这个线程中提出的解决方案:UITextField 边框颜色不能解决我的问题。

这是我想要实现的样式和颜色:

textField.layer.cornerRadius=8.0f;
textField.layer.masksToBounds=YES;
[[textField layer] setBorderColor:[[UIColor colorWithRed:171.0/255.0 green:171.0/255.0 blue:171.0/255.0 alpha:1.0] CGColor]];
textField.layer.borderWidth= 1.0f;

我也进口了QuartzCore/QuartzCore.h。我想设置它,以便我的应用程序中具有自定义类的每个 TextFieldInputTextField都将以这种背景显示。此时,每当我在应用程序中运行它时,所有字段都采用我在 Storyboards 中设置的背景值(当前为无边框)。

感谢您的帮助!

4

2 回答 2

1

您正在实例化一个InputTextField内部方法,该方法只要求您CGRect绘制一个矩形,这已经没有多大意义,但代码永远不会被调用,因为它位于return语句之后。

如果您希望所有人都InputTextField以特定的方式设置实例化layer的时间。InputTextField

使用看起来像这样的故事板:

- (id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithCoder:aDecoder];
    if (self) {
        self.layer.cornerRadius=8.0f;
        self.layer.masksToBounds=YES;
        [self.layer setBorderColor:[[UIColor colorWithRed:171.0/255.0 green:171.0/255.0 blue:171.0/255.0 alpha:1.0] CGColor]];
        self.layer.borderWidth= 1.0f;
    }
    return self;
}
于 2014-01-15T10:33:11.887 回答
1

问题在这里:

- (CGRect)editingRectForBounds:(CGRect)bounds {

return inset;

什么都没有被调用。将您的代码移到返回上方。

编辑#1

将此添加到您的子类中:

- (void)layoutSubviews {
    CALayer *layer = self.layer;
    layer.cornerRadius = 8;
    layer.borderWidth = 1;
    layer.borderColor = [UIColor colorWithRed:171.0/255.0 green:171.0/255.0 blue:171.0/255.0 alpha:1.0].CGColor;
    [super layoutSubviews];
}
于 2014-01-14T17:49:52.093 回答