在iOS中创建和重用文本样式

时间:2015-03-29 14:17:18

标签: ios objective-c xcode uistoryboard

在我的iOS应用程序中,我想用字体名称,字体大小,颜色等定义文本样式(与CSS中相同),并在我的代码中的任何地方重复使用。

我试图在Storyboard中找到它而没有任何运气。你知道有什么方法可以实现它吗?

3 个答案:

答案 0 :(得分:0)

以下是以编程方式执行此操作的方法 您可以为每个类设置全局外观设置。它使用 UIAppearance 代理完成,自iOS 5开始提供 通过调用此代码:

[[UILabel appearance] setFont:[UIFont fontWithName:@"YourFontName" size:17.0]];

在应用程序启动时的某个位置,您将为 UILabel 设置此字体,稍后将创建该字体。
UINavigationBar和其他一些类有相同的 UIAppearance 接口。

P.S。这里有一个糟糕的情况,你仍然需要在任何地方设置字体大小,因为我认为你不想在任何地方都有相同的尺寸...
因此,另一种方法是为 UIFont 创建类别:

#import <UIKit/UIKit.h>
@interface UIFont (SytemFontOverride)
@end

@implementation UIFont (SytemFontOverride)

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

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

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

#pragma clang diagnostic pop

@end

this主题获得答案。别忘了在那里设置加:)

答案 1 :(得分:0)

您无法像在CSS中那样为iOS中的文本创建样式。 我建议的唯一解决方案是为标签创建一个新类,它继承自UILabel,而不是像这样创建一个为其定义字体的类方法:

myLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:14];

答案 2 :(得分:0)

您可以制作UILabel的子类并覆盖awakeFromNib-(id)init-(id)initWithFrame等方法。在这些方法中,您可以调用常用方法来自定义标签

在storyBoard上,您可以拖放标签并将其类别从UILabel更改为Custom Class

-(id)init
{
   self = [super init];
   if (self) 
   {
       [self customiseLabel];
   }

   return self;
}

-(void)customiseLabel
{
   self.layer.cornerRadius = 4.0;
}

同样,您也会覆盖其他方法。如图所示,您无需一直自定义标签。