gpt4 book ai didi

ios - 当 UITableView 加载并在滚动后得到修复时,UILabel 向左移动

转载 作者:行者123 更新时间:2023-11-29 00:58:19 25 4
gpt4 key购买 nike

我有一个 tableView,我在其中放置了一个 UILabel 并正在动态更改其左侧约束的常量:我的 TableViewController

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as? TableViewCell




//let totalLength = (cell.slider.frame.width + (cell.postNumber.frame.width + cell.negNumber.frame.width + cell.middleConstraint.constant))
let differnceToRemove = (cell!.postNumber.frame.width + cell!.negNumber.frame.width + cell!.middleConstraint.constant) / 2

if indexPath.row == 0 {
cell!.slider.value = 0

}else if indexPath.row == 1 {
cell!.slider.value = 1.0
}
else if indexPath.row == 2 {
cell!.slider.value = 0.5
}
else if indexPath.row == 3 {

cell!.slider.value = 0.25
}
else if indexPath.row == 4 {
cell!.slider.value = 0.33
}


cell!.contraint.constant = ((( CGFloat (cell!.slider.value) ) * cell!.slider.frame.width) + cell!.paddingConstraint.constant) - differnceToRemove



let leftTrackImage = UIImage(named: "vLine")
cell!.slider.setThumbImage(leftTrackImage, forState: .Normal)
cell!.slider.setThumbImage(leftTrackImage, forState: .Selected)
cell!.slider.setThumbImage(leftTrackImage, forState: .Highlighted)


return cell!
}

我的 TableViewCell:

class TableViewCell: UITableViewCell {


@IBOutlet var paddingConstraint: NSLayoutConstraint!
@IBOutlet var postNumber: UILabel!
@IBOutlet var negNumber: UILabel!
@IBOutlet var middleConstraint: NSLayoutConstraint!

@IBOutlet var contraint: NSLayoutConstraint!

@IBOutlet var slider: CustomSlider!

override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}

当 tableView 加载时图像 1:image 1 when View loads

当我滚动图片 2 时:

image 2 after scrolling

在我的 tableView 上滚动后,每个标签都设置到它们的确切位置,尝试了很多事情,比如在 Storyboard中重新安排我的约束,清理构建等仍然没有运气,如果有人知道出了什么问题,那么请提供帮助

最佳答案

更改约束后需要更新布局:

cell!.contraint.constant =  ((( CGFloat (cell!.slider.value) ) * cell!.slider.frame.width) + cell!.paddingConstraint.constant) - differnceToRemove
cell.setNeedsLayout()
cell.layoutIfNeeded()

参见 UIView Class Reference 的“布局 subview ”部分文档。

自动布局可能很棘手,所以我引用了 Apple 的指南 here .

编辑

您也可以在 viewDidLoad() 中使用这些方法。

tableView.setNeedsLayout() 
tableView.layoutIfNeeded()

我们强制 TableView 重新加载它自己,从而进行另一个布局过程。这是一项解决方案,您仍然应该了解第一个布局 channel 和第二个布局 channel 之间的区别(由于您滚动)。我将从您的自定义表格 View 单元开始。

关于ios - 当 UITableView 加载并在滚动后得到修复时,UILabel 向左移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37346919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com