我正在更新約束的CellForRow方法。更新約束後,我應該調用哪個方法,setUpdateConsraint()或layoutIfNeeded()?或者只是返回細胞。無需調用任何方法?更新約束在cellforRow
回答
致電layoutIfNeeded()
並執行方法prepareForReuse
您需要重置約束的方法。
例如:
override func prepareForReuse() {
super.prepareForReuse()
yourConstraint.constant = defaultConstraint
}
爲什麼這是neeeded:當您滾動,因爲細胞被重新使用它會隨機使用的限制後。
cellForRowAt
是一個完全可以接受的地方來更新約束,然後簡單地返回單元格。你並不需要調用別的:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "SCellA", for: indexPath) as! SCellA
// Configure the cell...
cell.theLabel.text = "\(indexPath)"
cell.theHeightConstraint.constant = indexPath.row % 2 == 0 ? 40 : 100
return cell
}
當我做這個約束沒有得到更新 –
*「約束沒有得到更新」* ---你是什麼意思?你不*看到*它?你是否收到錯誤或警告信息?其他一些代碼是否也在改變'.constant'?如果您逐步進行調試,您會得到什麼樣的價值?你需要提供更多的信息。 – DonMag
更新約束常量值後,調用updateConstraint()工作正常。 –
- 1. 更新約束
- 2. 更新約束佈局
- 3. 更新與外鍵約束
- 4. 約束沒有在xcode中更新
- 5. 更新約束列表在Pyomo飛行
- 6. 重新啓用「更新約束」選項
- 7. 約束沒有更新迅速
- 8. 無法自動更新的約束
- 9. EF。更新。唯一鍵約束
- 10. 程序化滑塊約束不更新
- 11. 以編程方式更新約束?
- 12. 更新,外鍵約束和空值
- 13. 斯威夫特更新約束
- 14. 更新時的約束違規
- 15. 迅速更新約束編程
- 16. 基於UIView約束更新UITableView大小
- 17. android sqlite約束更新失敗
- 18. 更新UITableViewCell中的約束不正確
- 19. Swift:更新視圖約束不可見
- 20. 約束更新時的委託
- 21. iOS的約束不更新預期
- 22. Grails唯一約束無法更新
- 23. 旋轉UIView後更新約束條件
- 24. SLQLite'更新時出錯。 '約束失敗''
- 25. 如何更新約束whenrotate景觀
- 26. 更新中的SQL約束IGNORE_DUP_KEY
- 27. Oracle更新查詢忽略主約束
- 28. mySQL更新,同時忽略表約束
- 29. iOS:同時更新約束和框架
- 30. XCode(Interface Builder):更新框架和約束?
調用cell.layoutIfNeeded()調用 – karthikeyan
layoutIfNeeded()用於更新的約束。 – shahnilay86