在iOS 7中反转UIDatePicker颜色

问题描述 投票:5回答:8

我想首先说我会在Apple Dev论坛上发布这个问题,但由于黑客攻击尝试惨败,或者其他什么,论坛已经离线了将近2周,我需要一个解决方案可能。

在iOS 7中,UIDatePicker看起来像这样:

并且客户要求看起来像这样:

(基本上是倒置的)。

我尝试过几件事:

  1. 将背景设置为黑色并循环浏览所有视图的子视图,直到我到达显示日期本身的标签并将其颜色更改为白色。问题是该视图只有一个子视图,并且该子视图没有自己的任何子视图。所以这个解决方案不起作用。 (它在ios6中完成)。
  2. filter应用于视图的CALayer。事情是,这只能在OS X上,而不是在iOS上,原因不明。
  3. UIApperance协议。从我所读到的,这应该工作,但我尝试过没有,我没有丰富的经验,以弄清楚为什么不。

我有什么想法可以尝试吗?这甚至可能吗?我在处理问题时犯了错误吗?

ios ios7
8个回答
1
投票

你想要什么是可能的,但它将被称为自定义日期选择器。

以下是您可以找到所需内容的链接。

https://www.cocoacontrols.com/controls/simpledatepicker

如果您需要更多,请查看以下链接。

https://www.cocoacontrols.com/search?utf8=%E2%9C%93&q=datepicker


6
投票

试试这个:

将此代码放入 - (void)viewDidLoad

[datePicker setValue:[UIColor whiteColor] forKey:@"textColor"];

迅速:

datePicker.setValue(UIColor.white, forKey: "textColor")

3
投票

不知道这是否仍然相关,但在Swift 3 / Xcode 8上你可以简单地这样做:

let datePicker = UIDatePicker()
datePicker.datePickerMode = UIDatePickerMode.date

// Sets the text color
datePicker.setValue(UIColor.white, forKey: "textColor")
// Sets the bg color
datePicker.backgroundColor = UIColor.black.withAlphaComponent(0.6)

textField.inputView = datePicker

2
投票

我花了相当多的时间来解决同样的问题。起初,我把UIDatePicker放在黑色背景上,并想知道为什么它是隐形的......

我最终放置了一个白色的UIView作为日期选择器的背景,所以当整个视图是黑色时,日期选择器是白色的。它实际上看起来还不错,但幸运的是我没有一个客户会决定设计。

客户端的一个可能的论点:旧的iOS7之前的日期选择器,也有一个预定义的非自定义背景。


1
投票

我理解你的挫败感,但iOS7是在NDA下。 通常这种视图是使用图层制作的,因为sublayerTransform可以使透视给出3D的想法。如果你没有看到子视图我会检查子层。 另一个要点是我不会破解太多的视图/层层次,ios <= 6到ios7过渡表明黑客攻击并不是一个好主意。 UIAppereance协议可能是要走的路,因为它会让你改变你可以改变的东西(不用将来搞砸),也许你可以设置一个backgroundImage,试着设置一个1x1pixel的blck颜色png,你也应该看到一个属性字符串属性或文本属性。


0
投票

我不认为通过更改默认UIDatePicker的属性可以直接执行此操作,尽管您可以使用自定义控件来执行此操作。这可能有所帮助,

MWDatePicker - https://github.com/mwermuth/MWDatePicker(在可可控件中找到它-https://www.cocoacontrols.com/controls/mwdatepicker


0
投票

根据iOS设计资源:

您无法自定义日期选择器的外观。

我会建议以下之一:

  • 重新设计您的UI以使用黑色文本
  • 使用客户日期选择器

0
投票

你应该告诉你的客户他的建议是违反iOS 7的设计原则的,确实是这样。我自己并不是iOS 7的忠实粉丝,但我们都应该试一试。您的客户应该暂时接受标准的iOS 7 UI,直到他能够做出明智的判断。根据他最初的印象来设计应用程序是一种灾难。

© www.soinside.com 2019 - 2024. All rights reserved.