Ios 更改UILabel字体 假设我有三个标签 我创建一种字体并将其分配给 所有三个标签
现在我编辑这个字体的类型/大小等,并期望这些标签的字体也会改变,这不会发生。我基本上需要将一种字体应用于多个标签,我知道这可以通过一个outlet集合来完成,但我只是想在理解我的逻辑中的缺陷方面得到一些帮助,所以这里是我的代码Ios 更改UILabel字体 假设我有三个标签 我创建一种字体并将其分配给 所有三个标签,ios,objective-c,uilabel,uifont,Ios,Objective C,Uilabel,Uifont,现在我编辑这个字体的类型/大小等,并期望这些标签的字体也会改变,这不会发生。我基本上需要将一种字体应用于多个标签,我知道这可以通过一个outlet集合来完成,但我只是想在理解我的逻辑中的缺陷方面得到一些帮助,所以这里是我的代码 self.labelFont = [UIFont fontWithName:@"System" size:12]; self.label1.font = self.labelFont; self.label2.font = self.labelFont; self.la
self.labelFont = [UIFont fontWithName:@"System" size:12];
self.label1.font = self.labelFont;
self.label2.font = self.labelFont;
self.label3.font = self.labelFont;
self.labelFont = [UIFont fontWithName:@"Courier" size:30];
感谢您在代码中创建了两个对象,
[UIFont-fontWithName:@“System”size:12]
,以及[UIFont-fontWithName:@“Courier”size:30]
最初,您的labelFont
变量指向第一个字体对象。然后将指定中的指针复制到三个标签的字体。此时,有四个指针引用同一个对象,即[UIFont-fontWithName:@“System”size:12]
调用返回的对象
接下来,将labelFont
更改为指向[UIFont-fontWithName:@“Courier”大小:30]
。一旦你这样做了,labelFont
开始指向这个新对象;它不再指向旧对象。但是,这三个标签仍然指向旧字体,因此它们的外观不会改变
这不能立即完成,您需要一个指针指向能够更改每个标签字体的指针。但是,当调用setter时,它会触发一个方法,该方法也可能导致一些副作用,因此更好的方法是创建一个setter来处理该行为:
- (void) setLabelFont: (UIFont*) labelFont {
_labelFont= labelFont;
self.label1.font = self.label2.font = self.label3.font = labelFont;
}
你应该只是子类
Y
UILabel,在那里修改字体,然后您作为子类一部分的任何标签都将具有您的字体。当你有100多个标签想要制作相同的字体时,它的编码更少,并且可以长期为你省去麻烦。该死,你比我快了5秒钟。投票通过。也许我会将第三行分隔成一个方法
-(void)resetFonts
,并调用self.label1.font=self.labelFont
。。。那里用于缩放。并从setLabelFont:
调用resetFonts
方法。