【问题标题】:Setting custom font for UILabel appearance causes UIDatePicker bug为 UILabel 外观设置自定义字体会导致 UIDatePicker 错误
【发布时间】:2014-06-04 06:35:15
【问题描述】:

在我的应用程序委托中,我使用[UILabel apperance] 设置了所有UILabels 的字体和fontColor,但这导致我的UIDatePicker 中的字体也发生了变化,这是Apple 不允许的,而且很明显原因是因为它在滚动和其他不一致和意外的行为时更改为默认字体,从而使 datePicker 出错。

设置所有UILabels时如何忽略UIDatePicker以保持默认?

【问题讨论】:

    标签: ios fonts uilabel uidatepicker uiappearance


    【解决方案1】:

    除了放弃UIDatePicker[UILabel appearance] 之外,我还没有找到解决此问题的“适当”解决方案,但我确实找到了一个至少可以隐藏问题的技巧。似乎在最初加载视图时,可以使用标签的外观代理绘制保存所选日期文本的UILabels,但是当UIDatePicker在重置日期后重绘时,它会将标签设置回来到系统字体。

    为了隐藏问题,在viewWillAppear: 中,我将日期设置为具有不同日期组件的两个不同日期值,然后将选择器设置回正确的日期,如下所示:

    [datePicker setDate:[NSDate dateWithTimeIntervalSince1970:0] animated:NO]; //1970-01-01
    [datePicker setDate:[NSDate dateWithTimeIntervalSince1970:49000000] animated:NO]; //1971-07-22
    [datePicker setDate:myDate animated:NO]; //Set back to the correct date
    

    它并不优雅,但它让日期选择器看起来又正常了。

    【讨论】:

      【解决方案2】:

      我发现的唯一简单解决方法是在代码中创建UIDatePicker(不使用情节提要)。我得到了我想要的。

      【讨论】:

        【解决方案3】:

        试试这个..

        [[UILabel appearance] setTextColor:[UIColor redColor]];
        [[UILabel appearance] setFont:[UIFont boldSystemFontOfSize:20.0f]];
        [[UILabel appearanceWhenContainedIn:[UIDatePicker class],nil] setTextColor:nil];// default is nil (text draws black)
        [[UILabel appearanceWhenContainedIn:[UIDatePicker class],nil] setFont:nil];// default is nil (system font 17 plain)
        

        这会将所有标签更改为红色及其字体,UIDatePicker 除外。希望这会有所帮助。

        红色和粗体字体用于演示目的。它们应该符合您的要求。

        【讨论】:

        • 谢谢,但我试过了,系统字体比日期选择器字体小。我可以将字体大小设置为默认的 UIDatePicker 字体大小,但是当我不应该这样做时,应用程序不会因为“更改”UIDatePicker 而被拒绝。此外,不知何故,这几个月被背景稍微挡住了……(怪异行为的一部分)。
        • 我见过有人自定义UIDatePicker(不知道是不是应用商店)。在stackoverflow.com/questions/10844675/… 引用的应用商店中有一个自定义UIDatePicker 的应用。由于您可以将日期选择器设置为默认字体,这会使 UILabel 更改无效,我想这不会给应用商店带来问题。 (我鼓励其他人在这方面指导您,因为我不太了解其中的应用商店部分。)
        • 好吧,我想起来了,自定义的不是 UIDatePicker 而是 UIPicker .. 我的错..
        • 啊,没问题,谢谢。我很惊讶我没有找到其他人遇到这个问题......
        猜你喜欢
        • 2019-08-05
        • 2014-09-11
        • 2013-06-05
        • 1970-01-01
        • 2011-06-05
        • 2012-04-02
        • 2014-10-15
        • 2021-04-01
        • 1970-01-01
        相关资源
        最近更新 更多