在我的iOS应用程序中,我想用字体名称,字体大小,颜色等定义文本样式(与CSS
中相同),并在我的代码中的任何地方重复使用。
我试图在Storyboard中找到它而没有任何运气。你知道有什么方法可以实现它吗?
答案 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;
}
同样,您也会覆盖其他方法。如图所示,您无需一直自定义标签。