簡體   English   中英

更改UILabel字體

[英]Changing UILabel font

  • 說我有三個UILabels。
  • 我創建一個字體並將該字體分配給所有三個標簽。

現在我編輯這個字體的類型/大小等,並期望這些標簽的字體也改變,這不會發生。 我基本上需要將單個字體應用於多個標簽,我知道這可以通過插座集合來完成,但我只是想幫助理解我邏輯中的缺陷所以這是我的代碼......

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]調用返回的對象。

插圖1

接下來,將labelFont更改為指向[UIFont fontWithName:@"Courier" size:30] 一旦你這樣做, labelFont開始指向那個新對象; 它不再指向舊對象。 但是,這三個標簽仍然指向舊字體,因此它們的外觀不會改變。

圖2

這不能立即完成,你需要一個指針指針能夠改變每個標簽的字體。 但是當調用setter時它會觸發一個也可能導致一些副作用的方法,所以更好的方法是創建一個setter來處理行為:

- (void) setLabelFont: (UIFont*) labelFont {
    _labelFont= labelFont;
    self.label1.font = self.label2.font = self.label3.font = labelFont;
}

您應該只是Y UILabel的子類,修改那里的字體,然后您作為子類的一部分的任何標簽將具有您的字體。 編碼較少,如果您有100多個標簽可以制作相同的字體,可以長期保存您的頭痛。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM