2016-11-26 70 views
0

我有TableViewCell填充數據。例如,我想僅顯示一個標籤,用戶單擊後單元格將調整大小並向用戶顯示所有數據。我完成了調整大小的部分,但是當單元格很小時,它會自動更改我的約束。有人能幫助我嗎?代碼和下面的照片。UITableViewCell點擊後調整大小,約束正在改變

謝謝!

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    if (i != indexPath.row) { 
     i = indexPath.row 
    } 
    else { 
     i = -1 
    } 
    tableView.reloadRows(at: [indexPath], with: UITableViewRowAnimation.automatic) 
} 


func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
    if (indexPath.row == i) { 
     return 250 
    } 
    else { 
     return 50 
    } 
} 

before user clicks

after user clicks

回答

1

當細胞是在50個的限制高度正在被打破,因爲沒有足夠的空間來容納所有這些,你希望他們進行佈局。因此,單元格的高度在您添加到單元格內的元素之前的任何其他約束條件之前都會被遵守,因此它們會一起擠壓。

要消除約束錯誤,請考慮約束條件下的優先級和關係模式。

最後,當你的細胞被摺疊,則可以隱藏所有其他標籤除了一個要顯示通過調用那些應該被隱藏在下面:

label.hidden = true 

或有生命的消失,就像這樣:

UIView.animate(withDuration: 0.2, animations: { 
     label.alpha = 0    
    }, completion: { completed -> Void in 
      label.hidden = true 
}) 

然後做相反的事情,讓它們在您展開單元格時重新出現。

+0

非常感謝,我在我的單元格中有一個視圖,並有邊緣限制..我只是將此視圖約束設置爲恆定高,現在它的工作... – deniskakacka

相關問題