0

私はこれを私の財産に持っています:

@property (strong, nonatomic) IBOutlet UILabel *titleLogin;
@property (strong, nonatomic) IBOutlet UILabel *titleRegister;
@property (strong, nonatomic) IBOutlet UILabel *labelTerms;
@property (strong, nonatomic) IBOutlet UILabel *titleVote;
@property (strong, nonatomic) IBOutlet UILabel *labelVote;

一方、私はこのループを持っています:

for (UIView *subview in [[self view] subviews]) {
    if ([subview isKindOfClass:[UITextField class]]) {
        UITextField *textField = (UITextField *)subview;
        [textField setFont:[UIFont fontWithName:@"ABeeZee-Regular" size:14]];
    } else if ([subview isKindOfClass:[UILabel class]]){
        UILabel *label = (UILabel *)subview;
        [label setFont:[UIFont fontWithName:@"Raleway-ExtraLight" size:28]];
    }
}

*labelTermsそのループでは、すべての UILabel のフォント サイズは同じですが、将来の開発で、*labelVoteおよび他のラベルのいくつかを例外にしたいと考えています。

ループまたは私のプロパティでこの例外を作成する方法は? 前もって感謝します...

4

2 に答える 2

1

tagxib/storyboard ファイルで各サブビューの を設定します。「ABeeZee-Regular」フォントを使用するすべてのサブビューにタグとして 1 があり、「Raleway-ExtraLight」フォントが必要なサブビューに 2 があることを確認してください。

ここに画像の説明を入力

ラベル/テキスト フィールドではないタグ 1 または 2 を持つサブビューがないことを確認してください。コードは次のように簡略化できます。

for (id subview in [[self view] subviews]) {
    if ([subview tag]==1) {
        [subview setFont:[UIFont fontWithName:@"ABeeZee-Regular" size:14]];
    } else if ([subview tag]==2){
        [subview setFont:[UIFont fontWithName:@"Raleway-ExtraLight" size:28]];
    }
}

またはより良い:

id fonts[]= { [UIFont fontWithName:@"ABeeZee-Regular" size:14], [UIFont fontWithName:@"Raleway-ExtraLight" size:28]};
for (id subview in [[self view] subviews]) {
    if([subview tag])
        [subview setFont: fonts[[subview tag]-1] ];
}

PS:多くのサブビューがあり、それらをグループ化したい場合は、同じプロパティを持ちたいサブビューのすべてのグループに配列を使用するというアイデアも(再)検討してください。

于 2013-09-11T17:24:15.850 に答える