在 UILabel 上使用外观代理会使我的应用程序被拒绝,因为它会改变 UIAlertView?
Posted
技术标签:
【中文标题】在 UILabel 上使用外观代理会使我的应用程序被拒绝,因为它会改变 UIAlertView?【英文标题】:Will using appearance proxy on UILabel get my app rejected because it alters UIAlertView? 【发布时间】:2014-07-07 15:48:58 【问题描述】:我希望自定义我的应用程序中的所有字体,并且一直使用[UILabel appearance]
API,因为它似乎是阻力最小的路径。
我注意到这也会影响 UIAlertView
内部的标签(如预期的那样),但我也知道自定义警报视图可能会导致应用被拒绝。
有人有这方面的经验吗?我是否应该只创建自己的 UILabel
子类并手动将其应用于我的应用程序中的每个标签?
【问题讨论】:
如果系统根据外观的详细信息自定义警报视图的标签,我想这不会是您的问题。您正在使用公共 API,这只是一个副作用,即使它是否是您目标的一部分。 【参考方案1】:UILabel 类符合 UIAppearanceContainer 协议,检查 UILabel.h 表明它的所有属性都没有标记为 UI_APPEARANCE_SELECTOR,这是使用 UIAppearance 的先决条件。所以你需要创建 UILabel 子类,如下所示。
@interface SmallLabel : UILabel
@end
@implementation SmallLabel
- (id)initWithFrame:(CGRect)frame
self = [super initWithFrame:frame];
if (self)
return self;
@结束
我认为你也可以在你的子类中尝试:
UIFont *newFont = [UIFont fontWithName:@"YourFontName" size:self.font.pointSize];
self.font = newFont
【讨论】:
以上是关于在 UILabel 上使用外观代理会使我的应用程序被拒绝,因为它会改变 UIAlertView?的主要内容,如果未能解决你的问题,请参考以下文章
为啥在 C 中使用错误的格式说明符会使我的程序在 Windows 7 上崩溃?
在 swiftyJSON 上使用“if let”会使我的核心数据分配出错