2

UIDatePickerの選択インジケータの色合いを変更することは可能ですか? または、独自の選択インジケーター イメージを追加できるように削除できますか?

の場合UIPickerView、選択インジケーターを無効にして、独自の選択インジケーター画像を提供できることを知っています。

4

2 に答える 2

2

デフォルトでは、選択インジケーターの色を変更するオプションはありません。ただし、回避策を作成できます。UIView選択した色と透明度のアルファ値を使用して単純なものを追加します。元の選択インジケーターに応じてサイズと座標を設定してオーバーレイします (サイズ 280x44、標準ピッカーの座標 20/130 - よくわからないので、これらが一致しない場合に備えて正しい値を見つけてください)。

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

それがあなたが始めることができるものであることを願っています。

ここに画像の説明を入力

于 2013-01-30T09:36:38.313 に答える
0

これは、UITableViewCell 内に配置され、純粋に autolayout 制約を使用してサイズ変更された 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+ での動作がテストされています。

于 2016-06-01T04:53:53.153 に答える