0

インターフェイスビルダーで作成したView Controllerには約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;

私はどこで間違いを犯していますか?

4

2 に答える 2

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];
于 2013-06-13T10:31:21.993 に答える
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;

        }
 }

これで試してみてください。

于 2013-06-13T10:31:38.143 に答える