UIImageView
点击UIButton
(自定义类)时,UITableViewCell
显示和隐藏的最佳方法是什么。
实际上我的行高是用UITableViewAutomaticDimension
计算的,我已经设置了所有必要的约束。
问题:最好更改单元格高度或UIImageView
高度?
如果我更改UIImageView
的高度限制,直到重新加载单元格,高度不会改变。
有什么建议吗?
答案 0 :(得分:0)
让您自定义UITableViewCell
类,CustomTableCell
。在CustomTableCell
中,您可以选择UIImageView
的出口(例如,imageView)。采取行动UIButton
(说,btnShow)。
实施以下方法;
首先在VC中使用全局数组,arrSelected说道
public func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat{
return UITableViewAutomaticDimension
}
open func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
open func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
let customCell : CustomTableCell = tableView.dequeueReusableCell(withIdentifier: "cell") as! CustomTableCell
customCell.imageView.tag = indexPath.row;
customCell.btnShow.tag = indexPath.row;
var xPos : CGFloat!
var yPos : CGFloat!
var width : CGFloat!
var height : CGFloat!
xPos = cell.imageView.frame.origin.x
width = cell.imageView.frame.size.width
height = cell.imageView.frame.size.height
if arrSelected.contains(indexPath.row) {
yPos = 100 // whatever the height of imageview when image is present
cell.imageView.isHidden = false
}
else{
yPos = cell.btnShow.frame.size.height
cell.imageView.isHidden = true
}
cell.imageView.frame = CGRect(x: xPos, y: yPos, width: width, height: height)
return customCell
}
// btnShow action
@IBAction func actionbtnShow(_ sender: UIButton) {
if sender.isSelected {
let itemToRemoveIndex = arrSelected.indexOf(sender.tag) {
arrSelected.removeAtIndex(sender.tag)
sender.isSelected = !sender.isSelected
}
else{
arrSelected.append(sender.Tag)
sender.isSelected = !sender.isSelected
}
// reload tableView
}
答案 1 :(得分:-2)
您可以在动画块中设置隐藏标记,并将tableView的beginUpdates和endUpdates打包在同一个块中。
UIView.animate(withDuration: 0.2, animations:{
imageView.isHidden = false
tableView.beginUpdates()
tableView.endUpdates()
})
或者在Objective-C中:
[UIView animateWithDuration:0.2 animations:^{
imageView.hidden = NO;
[tableView beginUpdates];
[tableView endUpdates];
}];
像这样,单元格的高度应该增长动画。