我想在不同情况下以芳香方式更改一些约束。
我的约束来自情节提要的声明:
@IBOutlet weak var topConstraintPostImageView: NSLayoutConstraint!
@IBOutlet weak var heightConstraint: NSLayoutConstraint!
这是我的代码,我想在其中更改约束:
func updateCellView(post: PostModel) {
// Wenn Bild mit Text gepostet wird
if post.imageURL != nil && post.postText != nil {
topConstraintPostImageView.constant = 10
// Wenn Text ohne bild gepostet wird
} else if post.imageURL == nil && post.postText != nil {
heightConstraint.constant = 1
// Wenn Bild ohne Text gepostet wird
} else if post.imageURL != nil && post.postText == nil {
topConstraintPostImageView.constant = 0
}
}
但是约束仍然没有改变。
这是我的cellForRowAt函数:
extension DiscoveryViewController: UITableViewDataSource {
// wie viele Zellen
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return postArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "DiscoveryCollectionViewCell", for: indexPath) as! DiscoveryCollectionViewCell
cell.updateCellView(post: postArray[indexPath.row].post!)
cell.layoutIfNeeded()
cell.user = postArray[indexPath.row]
cell.post = postArray[indexPath.row]
cell.delegate = self
return cell
}
}
在此先感谢您的帮助!
答案 0 :(得分:1)
在vc的cellForRowAt
中插入
cell.updateCellView(arr[indexPath.row])//// change arr to your datasource arr inside here set constants
cell.layoutIfNeeded()
return cell
if语句的结尾
答案 1 :(得分:0)
考虑从setNeedsUpdateConstraints()
在您的视图上调用updateCellView()
,然后实施:
class MyView: UIView {
// ...
override func updateConstraints() {
super.updateConstraints()
// This is where you update your constraints including the logic above.
}
// ...
}
✳️更妙的是,考虑使用UIStackViews安排并单独隐藏或显示要有条件显示的视图。