将表格视图单元格中的颜色滑块设置为单元格的全长

时间:2016-11-13 23:35:35

标签: ios swift

我将此color slider合并到我的应用中,我无法将其放入表格视图单元格中,以便在纵向和横向视图中占用单元格的长度。下面是两个截图,以纵向和横向显示我的应用程序。您可以看到颜色滑块不会延伸单元格的整个长度。这是我设置颜色滑块的代码。我试图弄清楚如何对CGRect进行属性编码,以便颜色滑块动态填充单元格的长度。

DataFrame

纵向当前视图: Color Slider Portrait

横向当前视图: Color Slide 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)
  }

Landscape Updated Code

1 个答案:

答案 0 :(得分:1)

原因是您已将彩色幻灯片的宽度设置为200,因此它始终为200。

您应该使用自动布局来实现这一点,您可以在storyboard / nib文件中添加约束,或者如果您以编程方式构建视图,则可以使用锚点添加autolayout,例如

colorSlider.translatesAutoresizingMaskIntoConstraints = false

NSLayoutConstraint.activateConstraints([
        colorSlider.leadingAnchor.constraintEqualToAnchor(UILable.leadingAnchor),
        colorSlider.trailingAnchor.constraintEqualToAnchor(cell.trailingAnchor),
        colorSlider.topAnchor.constraintEqualToAnchor(cell.topAnchor, constant: 8),

colorSlider.bottomAnchor.constraintEqualToAnchor(cell.bottomAnchor,constant:-8)             ])