2013-06-13 29 views
0

我在界面生成器中创建的视图控制器中有大约30个UITextField(IBOutlet)。设置文本框数组的边框颜色

现在我想设置所有这些UITextField的边框颜色和边框宽度。

所以下面是我正在尝试的代码,它没有发生。

for (UIView *subView in self.view.subviews) { 
     if ([subView isKindOfClass:[UITextField class]]) { 

      [[subView layer] setBorderColor:[[UIColor colorWithRed:171.0/255.0 green:171.0/255.0 blue:171.0/255.0 alpha:1.0] CGColor]]; 
      subView.layer.borderWidth= 1.0f; 

     } 
} 

但是,如果我单独做每个对象,改变是反映。

 [[textfieldOne layer] setBorderColor:[[UIColor colorWithRed:171.0/255.0 green:171.0/255.0 blue:171.0/255.0 alpha:1.0] CGColor]]; 
     textfieldOne.layer.borderWidth= 1.0f; 

我在哪里做错了?

+2

ABove代码正在工作。我检查你的代码.... – Kalpesh

+0

你是对的,Ooops我的错误,self.view.subviews是这里的主要罪魁祸首,在我的情况是不同的。感谢大家的回应。 – user1227928

+0

你不能使用'appearance'属性吗?像'[[UITextField外观] setBorderColor:[[UIColor redColor] CGColor]];' – Popeye

回答

2

你的代码应该可以工作,但如果你对你的UIView进行了类型转换(并不是说我会看到它会如何改变)。试试这个

for (UIView *subView in self.view.subviews) { 
     if ([subView isKindOfClass:[UITextField class]]) { 
      UITextField *aTextField = (UITextField *)subView; 
      [[aTextField layer] setBorderColor:[[UIColor colorWithRed:171.0/255.0 green:171.0/255.0 blue:171.0/255.0 alpha:1.0] CGColor]]; 
      aTextField.layer.borderWidth = 1.0f; 

     } 
} 

另外在旁边注意;尽量不要将点符号与括号混合在一起,因为它会使代码非常不一致。选择一个并坚持下去。

点标记

aTextField.layer.borderColor = [[UIColor colorWithRed:171.0/255.0 green:171.0/255.0 blue:171.0/255.0 alpha:1.0] CGColor]; 
aTextField.layer.borderWidth = 1.0f; 

支架

[[aTextField layer] setBorderColor:[[UIColor colorWithRed:171.0/255.0 green:171.0/255.0 blue:171.0/255.0 alpha:1.0] CGColor]]; 
[[aTextField layer] setBorderWidth:1.0f]; 
2
for (UITextField *subView in self.view.subviews) { 
     if ([subView isKindOfClass:[UITextField class]]) { 

      [[subView layer] setBorderColor:[[UIColor colorWithRed:171.0/255.0 green:171.0/255.0 blue:171.0/255.0 alpha:1.0] CGColor]]; 
      subView.layer.borderWidth= 1.0f; 

     } 
} 

与this.May这可以帮助你试试。