【问题标题】:invert UIDatePicker colors in iOS 7在 iOS 7 中反转 UIDatePicker 颜色
【发布时间】:2013-07-28 09:13:37
【问题描述】:

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

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

一位客户要求看起来像这样:

(基本上是倒置的)。

我尝试了一些方法:

  1. 将背景设置为黑色并循环浏览所有视图的子视图,直到找到显示日期本身的标签并将其颜色更改为白色。问题是视图只有一个子视图,并且该子视图没有它自己的任何子视图。所以这个解决方案不起作用。 (在 ios6 中确实如此)。

  2. filter 应用于视图的 CALayer。问题是这只能在 OS X 上而不是在 iOS 上,出于某种未知的原因。

  3. 使用UIApperance 协议。从我读过的内容来看,这应该可行,但我尝试过的却没有,而且我没有丰富的经验来弄清楚为什么不这样做。

有什么我可以尝试的想法吗?这甚至可能吗?我处理问题的方法有误吗?

【问题讨论】:

  • 你有没有想过这个问题?我遇到了问题。
  • @ijason03 不,我没有。这是不可能的,或者至少对于非 Apple 开发者来说是不可能的。

标签: ios ios7


【解决方案1】:

试试这个:

将此代码放入-(void)viewDidLoad

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

斯威夫特:

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

【讨论】:

  • 是否兼容iOS 7.0?
  • 是的,当然,记得将 uiDatePickerOutlet 替换为你的 datepicker 出口
【解决方案2】:

不知道这是否仍然相关,但在 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

【讨论】:

    【解决方案3】:

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

    我最终放置了一个白色 UIView 作为日期选择器的背景,因此当整个视图为黑色时,日期选择器为白色。它实际上看起来还不错,虽然谢天谢地我没有一个客户来决定设计。

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

    【讨论】:

      【解决方案4】:

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

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

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

      如果您需要更多,请点击以下链接。

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

      【讨论】:

        【解决方案5】:

        我理解你的沮丧,但 iOS7 处于保密协议之下。
        通常这种视图是使用图层制作的,因为 sublayerTransform 可以使透视图产生 3D 的概念。如果您没有看到子视图,我会检查子图层。
        另一点是我不会破解太多的视图/层层次结构,从 ios UIAppereance 协议可能是要走的路,因为它会让你改变你可以改变的东西(以后不用搞砸了),也许你可以设置一个 backgroundImage,尝试设置一个 1x1pixel 的 blck color png,你还应该看到一个属性字符串属性或文本属性。

        【讨论】:

          【解决方案6】:

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

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

          【讨论】:

            【解决方案7】:

            根据 iOS 设计资源:

            您不能自定义日期选择器的外观。

            我会建议以下之一:

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

            【讨论】:

              【解决方案8】:

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

              【讨论】:

              • 我不知道这是否真的违反设计原则,因为大多数其他 UI 元素的颜色都可以更改,包括常规的 UIPicker。但我不知道为什么 Apple 会跳过这一元素的着色功能。
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-03-04
              • 2014-09-21
              • 1970-01-01
              • 2019-03-30
              相关资源
              最近更新 更多