【问题标题】:UIDatePicker with white background on item项目上有白色背景的 UIDatePicker
【发布时间】:2013-12-23 17:07:29
【问题描述】:

我在带有 UIDatePicker 的 iOS 7 上遇到了这个问题。当我在任何视图控制器中显示 UIDatePicker 时,它会在当前日期获得白色背景,如果您滚动小部件,它将消失。我用一个空的新项目进行了测试,结果相同(只是新项目,将情节提要颜色设置为白色以外的颜色并将任何 UIDatePicker 拖到场景中并尝试这样)。 有人知道为什么会这样吗?这个控件应该是透明的,并且没有这个白色标签。

【问题讨论】:

  • 您解决了这个问题吗?我在这里遇到同样的问题,找不到答案...我正在创建一个通用应用程序,在 iphone 上它工作正常,但在 iPad 上它有这个问题...
  • 不,我没有。我向 Apple 的雷达提交了一个错误 #15719124,但我从他们那里得到的唯一回应是我需要更新我的错误报告以包含一个带有示例的项目。那是一周前的事,直到那时还没有回应。显然,这似乎是日期选择器的错误,但它很烦人
  • 当您收到 Apple 的回复时,请在此处更新此问题...这个错误也让我很烦恼,我需要尽快分发我的应用程序...谢谢!
  • 两个月后,仍然没有来自 Apple 的信息......我认为他们试图强迫我们将这种控制置于白色背景以避免这种废话
  • 嗨罗德里戈,我也面临同样的问题,请问解决了吗?

标签: ios ios7 uidatepicker


【解决方案1】:

我在 iPad 版的应用程序中遇到了同样的错误。不知何故,iPhone版本运行良好。我找到了一种解决方法,可以从 UIDatePicker 中删除白色背景。


观察

  • 第一个日期及其下方的日期显示为白色背景。
  • 更改日期(滚动)时,白色背景会消失,不会再出现。

修复

为了解决这个问题,在视图中显示UIDatePicker之前,我手动更改了一次日期,然后重新设置要显示的日期,如下所示:

[datePicker setDate:[NSDate dateWithTimeIntervalSince1970:NSTimeIntervalSince1970]];
[datePicker setDate:[NSDate date]];
//Now add the datepicker to the view that you want to.

这似乎为我消除了烦人的白色背景。告诉我它是否适合你!

【讨论】:

  • 谢谢!在 iOS 7.1 中为我工作。只需要添加一些间隔(在我的情况下为 19.5 个月的工作),然后再次将其设置回来: NSDate date1 = [NSDate dateWithTimeInterval:60*60*24*30*19.5 sinceDate:date]; [self.startDatePicker setDate:date1 动画:NO]; [self.startDatePicker setDate:date Animation:NO];
【解决方案2】:

我自己也遇到过这个问题。要修复它,您需要获取一个 UIView 对象并将其放在您希望 UIDatePicker 所在的位置。将UIView 的背景颜色设置为白色,并确保选择不透明。

接下来将您的UIDatePicker 放入UIView 并连接任何插座或任何需要与您的UIDatePicker 连接的东西,从这里运行您的应用程序,它应该可以工作。

【讨论】:

  • Sooo...你的答案是'让日期选择器变白'? OP 和我都需要一个透明的日期选择器,所以这不是一个足够的答案
  • @RedNightingale 我与 DTS 聊天,他们知道这是一个已知错误,应该在 Xcode 更新中修复。此时,您必须在其后面放置一个白色背景。对不起。
  • 哈哈...别担心...我只是在看你的答案并挠头;)。假设“XCode 更新”将是现阶段的 7.1 GM
  • 希望只有一个人! :)
【解决方案3】:

好的,我找到了一个有点棘手的解决方案,但是解决方案:) 所以它与 iPad (iOS 7) 的 UITableViewCell 背景颜色相同。解决办法:

- (void)makeAllSubviewsBackroundClear:(UIView*)view
{
    for (UIView *subview in view.subviews)
    {
        if ([subview isKindOfClass:[UITableViewCell class]])
        {
            subview.backgroundColor = [UIColor clearColor];
        }

        [self makeAllSubviewsBackroundClear:subview];
    }
}

-(void)layoutSubviews
{
    [self makeAllSubviewsBackroundClear:self.datePicker];

    [super layoutSubviews];
}

解决方案是将“单元格”背景颜色设置为您需要的颜色,在我们的例子中 - 清除颜色,当单元格“出现”时。也许这不是一个理想的解决方案,但我希望它会有所帮助。

P.S.:您可以以某种方式重构此代码,以便不在每个布局子视图中调用此方法,但在特殊情况下。

【讨论】:

    【解决方案4】:

    我有类似的问题背景有问题,并通过解决自动布局约束来解决它。我假设 UIDatePicker 不喜欢它的约束与它的内在内容大小冲突。尝试以您的选择器可以根据其内容调整自身大小的方式更新约束。

    【讨论】:

      猜你喜欢
      • 2013-03-04
      • 1970-01-01
      • 2013-02-12
      • 2013-11-27
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2014-09-14
      • 2018-06-07
      相关资源
      最近更新 更多