为UILabel外观设置自定义字体会导致UIDatePicker错误

时间:2014-06-04 06:35:15

标签: ios fonts uilabel uidatepicker uiappearance

在我的应用代理中,我使用fontColor设置了所有UILabels的字体和[UILabel apperance],但这导致我的UIDatePicker中的字体也发生变化,Apple不允许,并且出于显而易见的原因,因为它通过在滚动时更改为默认字体以及其他不一致和意外的行为来使datePicker错误。

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

3 个答案:

答案 0 :(得分:1)

我还没找到一个适当的"解决这个问题的方法是放弃UIDatePicker[UILabel appearance],但我确实找到了至少隐藏问题的黑客。似乎在最初加载视图时,可以使用标签的外观代理绘制保存所选日期的文本的UILabel,但是在具有日期后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

它并不优雅,但它使得日期选择器再次显得正常。

答案 1 :(得分:1)

我发现唯一简单的解决方法是在代码中创建UIDatePicker(不使用故事板)。我得到了我想要的东西。

答案 2 :(得分:0)

试试这个..

[[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之外,这会将所有标签更改为红色及其字体。希望这会有所帮助。

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