【发布时间】:2016-11-03 05:47:55
【问题描述】:
在我的应用程序中,我为用户提供了更改整个应用程序字体的选项。为此,我为用户提供了一个选项列表(如粗体、半粗体、常规、细等)。一旦用户选择了上述任何选项,我就会将该值保存在 NSUserDefaults 中。
现在用户已经选择了他的选项,所以我应该更改整个应用程序的字体。同样,我创建了一个类别
#import "UILabel+Helper.h"
@implementation UILabel (Helper)
- (void)setSubstituteFontName:(NSString *)name UI_APPEARANCE_SELECTOR {
if ([name isEqual: kAppFontSFTextBold]) {
self.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
}
else if ([name isEqual:kAppFontSFTextSemiBold]) {
self.font = [UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline];
}
else if ([name isEqual: kAppFontSFTextMedium]) {
self.font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
}
else if ([name isEqual: kAppFontSFTextRegular]) {
self.font = [UIFont preferredFontForTextStyle:UIFontTextStyleCaption1];
}
else if ([name isEqual: kAppFontSFTextLight]) {
self.font = [UIFont preferredFontForTextStyle:UIFontTextStyleCaption2];
}
// self.font = [UIFont fontWithName:name size:self.font.pointSize];
}
@end
但要在我的应用程序中进行这些更改,我必须以编程方式重新启动我的应用程序,而苹果不支持。在阅读了几个答案后,我知道我可以使用 exit(0) 强制终止我的应用程序。
现在,一旦用户选择该选项,我就会如前所述将所选值保存在本地并退出(0)。现在用户必须自行重启应用。
这种方法是否正确。如果没有,请建议我提供更好的解决方案。
【问题讨论】:
-
exit(0) 将导致您的应用被 Apple 拒绝
标签: ios objective-c fonts uilabel objective-c-category