2012-03-09 66 views
3

如果我有3個標籤叫總,得分和名稱,我想改變我用這個命令如何更改所有標籤的字體在一個命令

[total setFont:[UIFont fontWithName:@"Times New Roman" size:22]]; 
[score setFont:[UIFont fontWithName:@"Times New Roman" size:22]]; 
[name setFont:[UIFont fontWithName:@"Times New Roman" size:22]]; 

,如果我有什麼這個文本的字體在一個視圖中像超過20個標籤一樣,並且都有不同的名稱,例如總得分名稱。

有沒有更簡單的方法來改變他們所有的字體到相同的字體類型?

回答

10

做快速列舉..

for(UIView *view in self.subviews) 
    { 
    if([view isKindOfClass:[UILabel Class]]) 
    { 
    [(UILabel *)view setFont:[UIFont fontWithName:@"Times New Roman" size:22]]; 

    } 
    } 
+0

請問你能解釋一下怎麼做嗎?我對這個新東西 – aLFaRSi 2012-03-09 14:12:33

+0

複製此代碼到您的代碼(無論你想改變字體..基本上你正在檢查你的視圖中的每個視圖..如果它是UIlabel的類型,所以改變它的字體..這段代碼將改變所有的標籤字體.. – Shubhank 2012-03-09 14:16:32

+0

謝謝,它的工作,但我需要改self.subviews self.view.subviews和UILabel類到UILabel類 – aLFaRSi 2012-03-09 17:23:25

2

對於特定的標籤;

for(UIView *v in self.view.subviews) { 
     if([v isKindOfClass:[UILabel Class]]) { 
      if (v.tag == 1453) 
       [(UILabel *)v setFont:[UIFont fontWithName:@"Times New Roman" size:22]]; 
     } 
    } 
+0

謝謝你的幫助:) – aLFaRSi 2012-03-09 17:39:26

0
中.H

UIFont * myCustomFont

;

在.M

myCustomFont = [UIFont fontWithName:@ 「Times New Roman字體」 大小:22];

[名稱setfont程序:myCustomFont]; //名稱是您的UILabel //

或向右prifix.pch文件打通了該項目。

+0

這段代碼是我的相同,我必須爲每個標籤設置字體 – aLFaRSi 2012-03-09 17:18:08

0

可以使用方法交叉混合的技術也取得了通過的UILabel類別這種效果: http://darkdust.net/writings/objective-c/method-swizzling#Step_2:_Create_the_wrapper_method

部首:

#import <UIKit/UIKit.h> 

@interface UILabel (Swizzling) 

- (UIFont *)swizzledFont; 

@end 

實現:

#import "UILabel+Swizzling.h" 
#import <objc/runtime.h> 

@implementation UILabel (Swizzling) 

- (UIFont *)swizzledFont 
{ 
    return [UIFont fontWithName:@"SourceSansPro-Light" size:[[self swizzledFont] pointSize]]; 
} 

+ (void)load 
{ 
    Method original, swizzled; 

    original = class_getInstanceMethod(self, @selector(font)); 
    swizzled = class_getInstanceMethod(self, @selector(swizzledFont)); 
    method_exchangeImplementations(original, swizzled); 
} 

@end 
0

覆蓋UIFont這樣:

創建UIFont+SytemFontOverride.h:相應

#import "UIFont+SytemFontOverride.h" 
@implementation UIFont (SytemFontOverride) 

#pragma clang diagnostic push 
#pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation" 

+ (UIFont *)boldSystemFontOfSize:(CGFloat)fontSize { 
    return [UIFont fontWithName:@"Bryant-Bold" size:fontSize]; 
} 

+ (UIFont *)systemFontOfSize:(CGFloat)fontSize { 
    return [UIFont fontWithName:@"Bryant-Regular" size:fontSize]; 
} 

#pragma clang diagnostic pop 

@end 

更改字體名稱:

#import <UIKit/UIKit.h> 

@interface UIFont (SytemFontOverride) 
@end 

UIFont+SytemFontOverride.m

相關問題