Jan*_*edi 34 iphone cocoa objective-c uikit ios
我正试图在我的整个过程中应用自定义字体iOS app
.我发现我可以使用:
[[UILabel appearance] setFont:[UIFont fontWithName:@"Proxima Nova" size:17.0]];
Run Code Online (Sandbox Code Playgroud)
设置所有的默认字体和大小UILabels
.但是,并非所有我的UILabels
共享字体都相同.
在设置整个iOS应用程序的默认字体?,有人有同样的担忧,并被告知将size参数设置为0.0只设置字体而不是字体大小.
UILabel
我的应用程序中的所有文本都消失了(因为显然iOS
从字面上理解了0.0字体大小).有关如何普遍设置字体而不是大小的任何建议?非常感谢!
Rae*_*ime 24
- (void)viewDidLoad
{
[super viewDidLoad];
[self setFontFamily:@"FagoOfficeSans-Regular" forView:self.view andSubViews:YES];
}
-(void)setFontFamily:(NSString*)fontFamily forView:(UIView*)view andSubViews:(BOOL)isSubViews
{
if ([view isKindOfClass:[UILabel class]])
{
UILabel *lbl = (UILabel *)view;
[lbl setFont:[UIFont fontWithName:fontFamily size:[[lbl font] pointSize]]];
}
if (isSubViews)
{
for (UIView *sview in view.subviews)
{
[self setFontFamily:fontFamily forView:sview andSubViews:YES];
}
}
}
Run Code Online (Sandbox Code Playgroud)
Dam*_*bin 19
这是Objective-C中的一个解决方案,将此类别放在您想要更改的任何位置,UILabel
Apperance
而无需设置UILabel
FontSize
:
@implementation UILabel (SubstituteFontName)
- (void)setSubstituteFontName:(NSString *)name UI_APPEARANCE_SELECTOR {
self.font = [UIFont fontWithName:name size:self.font.pointSize];
}
@end
Run Code Online (Sandbox Code Playgroud)
然后,您可以更改Apperance
:
[[UILabel appearance] setSubstituteFontName:@"SourceSansPro-Light"];
Run Code Online (Sandbox Code Playgroud)
mar*_*mor 12
我在我的项目中使用了接受的答案,但是需要一个更通用的功能,所以它会将字体更改为每个可能的字体,我也选择设置一些字体字体到我们的自定义字体之间的映射,所以他们也可以通过storybuilder和xib文件访问.
+ (void)setupFontsForView:(UIView *)view andSubViews:(BOOL)isSubViews
{
if ([view respondsToSelector:@selector(setFont:)] && [view respondsToSelector:@selector(font)]) {
id viewObj = view;
UIFont *font = [viewObj font];
if ([font.fontName isEqualToString:@"AcademyEngravedLetPlain"]) {
[viewObj setFont:[UIFont fontWithName:PRIMARY_FONT size:font.pointSize]];
} else if ([font.fontName hasPrefix:@"AmericanTypewriter"]) {
[viewObj setFont:[UIFont fontWithName:SECONDARY_FONT size:font.pointSize]];
}
}
if (isSubViews) {
for (UIView *sview in view.subviews) {
[self setupFontsForView:sview andSubViews:YES];
}
}
}
Run Code Online (Sandbox Code Playgroud)
通过编写Label的类别,我们可以更改整个应用程序的字体.
@implementation UILabel (CustomeFont)
-(void)awakeFromNib
{
[super awakeFromNib];
[self setBackgroundColor:[UIColor clearColor]];
[self setFont:[UIFont fontWithName:@"Helvetica" size:self.font.pointSize]];
}
@end
Run Code Online (Sandbox Code Playgroud)
Swift3 https://gist.github.com/dimohamdy/c47992e14c1a3ee3315c06e2480e121e
你不能设置标签字体的外观,使我创建默认字体的其他值,当我设置新字体我只获得新字体的名称和旧标签的大小,并创建其他字体并设置此字体
//when you want to set font for all labels in Application
UILabel.appearance().defaultFont = UIFont.systemFont(ofSize: 15/*Any Value*/, weight: UIFontWeightThin)
extension UILabel{
dynamic var defaultFont: UIFont? {
get { return self.font }
set {
//get old size of lable font
let sizeOfOldFont = self.font.pointSize
//get new name of font
let fontNameOfNewFont = newValue?.fontName
self.font = UIFont(name: fontNameOfNewFont!, size: sizeOfOldFont)
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
27358 次 |
最近记录: |