我是iOS编程的新手。这是我面临的情况:我必须以编程方式创建一个包含大约 25 个标签的视图。在所有 25 个标签中,颜色和字体大小等一些特征很常见。
显而易见的解决方案是单独处理每个标签。但我很想知道有没有办法通过编写最少的编码来为所有字体分配一个通用字体,或者我是否可以单独处理每个标签。
我已经在网上研究了解决方案,但没有成功。如果有替代方案,将来如果有人处理大量没有,它会有所帮助。的子视图。谢谢。
是的,您可以将它们全部压缩成一条狭窄的线:
[view.subviews enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop){ [([obj respondsToSelector:@selector(setFont:)] ? obj : nil) setFont:newFont];}];
try this .
for( UIView *subVeiw in self.subviews) {
if([subVeiw isKindOfClass:[UILabel Class]]) {
[(UILabel *)subVeiw setFont:[UIFont fontWithName:@"Times New Roman" size:20]];
//You can set the Font like this.
//Here is Your UILabel Object if you want to use it.
UILabel *yourLabel = (UILabel *) subVeiw;
}
}
我之前尝试通过UILabel
在构造函数中子类化和设置所需的属性来实现相同的目标,并且只需在设计器中更改标签类:
@implementation CustomLabel
//For Code initialized Labels
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code .. Set your properties here
self.font = [UIFont fontWithName:@"TradeGothicLTStd-Bold" size:self.font.pointSize];
}
return self;
}
//For designer initialized labels
-(id)initWithCoder:(NSCoder *)aDecoder{
self = [super initWithCoder:aDecoder];
if (self) {
// Initialization code .. Set your properties here
self.font = [UIFont fontWithName:@"TradeGothicLTStd-Bold" size:self.font.pointSize];
}
return self;
}
循环遍历视图的子视图,如下所示
for(UIView *v in yourView.subviews){
if([v isMemberOfClass:[UILabel class]]){
UILabel *label=(UILabel*)v
// assign the required properties here.
} }