我在tableView单元格中有一个color slider,它从标签延伸到单元格的trailingAnchor。我遇到的问题是当设备方向改变时,颜色滑块不会更新其约束,也不再延长单元格的整个长度。下面是我在颜色滑块上设置约束的代码。以下是显示我遇到的问题的图片。当我呈现此场景时,如果我的手机已经处于横向,则颜色滑块会根据需要延伸单元格的整个长度。但是,如果我在查看此场景时切换到横向,则滑块如下所示。如果有帮助,这是full code。
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 :(得分:1)
CALayers
都不会调整其父级UIView
的大小。
您需要向ColorSlider
添加代码,以便在ColorSilider
的尺寸/位置发生变化时更新图层。幸运的是,UIView
上有一种专门针对此的方法。
override func layoutSubviews() {
super.layoutSubviews()
gradientLayer.frame = bounds
}