在 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”会使我的核心数据分配出错

激活 iPhone 相机操作会使我的应用程序崩溃 [重复]

为啥在使用 FBO 进行多重采样时,OpenGL 会使我的场景变亮?

为啥这个旧的依赖会使我的 gradle 崩溃?

为啥我的 unwind segue 会使我的应用程序崩溃?