2016-11-18 20 views
1

ラベルビューからセルのtrailingAnchorまで伸びるtableViewセルにcolor sliderがあります。私が抱えている問題は、デバイスの向きが変わるとカラースライダがその制約を更新せず、もはやセルの全長が伸びないということです。以下は、カラースライダに制約を設定するコードです。以下は、私が抱えている問題を示すイメージです。このシーンを提示するときに自分の携帯電話がすでに横向きになっている場合、カラースライダは必要に応じてセルの全長に伸びます。しかし、すでにこのシーンを見ているときに風景に切り替えると、スライダは以下のように表示されます。それが役立つならば、full codeがあります。デバイスの向きが変更されても制約が更新されない

Slider PortraitSlider Landscape

func configureColorSlider() { 
    let colorSlider = ColorSlider() 
    let xCell = colorCell.contentView.bounds.width 
    let yCell = colorCell.contentView.bounds.height 
    colorSlider.frame = CGRect(x: xCell/4, y: yCell/4, width: 200, height: 24) 
    colorSlider.orientation = .horizontal 
    colorSlider.addTarget(self, action: #selector(ConfigureTimestampTableViewController.changedColor(_:)), for: .valueChanged) 

    colorCell.contentView.addSubview(colorSlider) 

    colorSlider.translatesAutoresizingMaskIntoConstraints = false 
    NSLayoutConstraint.activate([colorSlider.leadingAnchor.constraint(equalTo: colorLabel.trailingAnchor, constant: 8), 
           colorSlider.trailingAnchor.constraint(equalTo: colorCell.contentView.trailingAnchor, constant: -8), 
           colorSlider.topAnchor.constraint(equalTo: colorCell.contentView.topAnchor, constant: 8), 
           colorSlider.bottomAnchor.constraint(equalTo: colorCell.contentView.bottomAnchor, constant: -8) ]) 


    } 
+0

'ColorSlider'の内容は' CALayers'ですか?彼らは自動レイアウトでサイズや位置を更新しません。 –

+0

です。 CAGradientLayer()を使用してカラースライダを描画します。それは問題でなければなりません。自動レイアウトを使用できない場合、スライダのサイズを変更することをお勧めしますか? – chickenparm

答えて

1

CALayersは、親への応答UIView自動レイアウトによって、または手動かどうか、サイズ変更さにサイズ変更されないであろう。

には、ColorSiliderのサイズ/位置が変更されたときにレイヤーを更新するコードを追加するだけです。幸いなことに、具体的にはUIViewの方法があります。

override func layoutSubviews() { 
    super.layoutSubviews() 
    gradientLayer.frame = bounds 
} 
+0

ありがとう! Xcodeは私が追加したときにこの関数にpublicを追加しましたが、うまくいきました! publicを使用しないと、 "インスタンスメソッドをオーバーライドすることは、その囲みタイプと同様にアクセス可能でなければならない"というメッセージが表示されました。 – chickenparm

+0

その通りです。 'ColorSlider'がpublicであれば、オーバーライドするメソッドもpublicでなければなりません。 –

関連する問題