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]];
    }
}

有了这个循环,我所有的 UILabel 都有相同的字体大小,但我想在未来的开发中为 和其他一些标签*labelTerms例外。*labelVote

如何在循环或我的财产中制作此异常?提前致谢...

4

2 回答 2

1

尝试

if(subView != labelTerms)
{
   .. etc...

我假设您足够聪明,可以弄清楚其余部分。

于 2013-09-11T16:37:32.887 回答
1

tag在您的 xib/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 回答