【问题标题】:Modify UIDatePicker selection indicator tint color修改 UIDatePicker 选择指示器的色调颜色
【发布时间】:2013-01-30 08:49:13
【问题描述】:

是否可以修改UIDatePicker 的选择指示器的色调?或者可以将其删除,以便我可以添加自己的选择指示器图像?

我知道在 UIPickerView 的情况下,您可以禁用选择指示器,以便您可以提供自己的选择指示器图像。

【问题讨论】:

    标签: ios objective-c cocoa-touch uidatepicker


    【解决方案1】:

    默认情况下没有更改选择指示器颜色的选项。 你可以做一个解决方法。我会添加一个简单的UIView,其中包含您选择的颜色和透明度的 alpha 值。根据原始选择指示器设置大小和坐标以覆盖它(尺寸为 280x44,标准选择器的坐标为 20/130 - 不确定,所以找出正确的值以防它们不匹配)。

    UIView *overlayIndicator = [[UIView alloc] initWithFrame:CGRectMake(20, 130, 280, 44)];
    overlayIndicator.backgroundColor = [UIColor redColor];
    overlayIndicator.alpha = 0.5f;
    [yourDatePicker addSubview:overlayIndicator];
    

    希望这是你可以开始的东西。

    【讨论】:

    • 那么有没有办法摆脱蓝色选择指示器?将红色选择指示器覆盖在蓝色指示器上会使它变成紫色吗? :-P
    • 没有。也许您应该考虑使用开源/第三方日期选择器或创建一个定制的?我添加了一个屏幕截图,来自代码 sn-p 的选择器的外观。
    【解决方案2】:

    这是我对放置在 UITableViewCell 内的 UIDatePicker 所做的,并且纯粹使用自动布局约束来调整大小。 (我建议继承 UIDatePicker)。

    let upperSelectorView = UIView()
    let lowerSelectorView = UIView()
    
    required init?(coder aDecoder: NSCoder) {
            super.init(coder: aDecoder)
    
            upperSelectorView.backgroundColor = UIColor(colorLiteralRed: 127, green: 139, blue: 131, alpha: 0.45)
            self.addSubview(upperSelectorView)
    
            lowerSelectorView.backgroundColor = UIColor(colorLiteralRed: 127, green: 139, blue: 131, alpha: 0.45)
            self.addSubview(lowerSelectorView)
        }
    
        override func layoutSubviews() {
            super.layoutSubviews()
            print(self.frame.size.height)
            if (self.frame.size.height == 216) { //height it used in portrait.
                upperSelectorView.frame = CGRect(x: 0, y: 91, width: self.frame.size.width, height: 0.5)
                lowerSelectorView.frame = CGRect(x: 0, y: 125, width: self.frame.size.width, height: 0.5)
            }
    
            if (self.frame.size.height == 162) { //height it used in landscape.
                upperSelectorView.frame = CGRect(x: 0, y: 63, width: self.frame.size.width, height: 0.5)
                lowerSelectorView.frame = CGRect(x: 0, y: 98, width: self.frame.size.width, height: 0.5)
            }
    
        }
    

    经测试可在 iPhone 6 和 iPhone 6+ 上运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-18
      • 2015-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-24
      • 2012-07-09
      • 1970-01-01
      相关资源
      最近更新 更多