Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 更改UILabel字体 假设我有三个标签 我创建一种字体并将其分配给 所有三个标签_Ios_Objective C_Uilabel_Uifont - Fatal编程技术网

Ios 更改UILabel字体 假设我有三个标签 我创建一种字体并将其分配给 所有三个标签

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

现在我编辑这个字体的类型/大小等,并期望这些标签的字体也会改变,这不会发生。我基本上需要将一种字体应用于多个标签,我知道这可以通过一个outlet集合来完成,但我只是想在理解我的逻辑中的缺陷方面得到一些帮助,所以这里是我的代码

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
方法。