У меня есть раскрывающийся список анимации UIView при нажатии. я хочу добиться того, чтобы высота UIView менялась, когда я нажимал на ячейку tableView, и автоматически следовал за высотой. это мой код
class SubjectCell: BaseCell {
lazy var tableView: UITableView = {
let tv = UITableView()
tv.delegate = self
tv.dataSource = self
tv.allowsSelection = false
return tv
}()
extension SubjectCell: UITableViewDelegate {
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 80
}
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension
}
}
// This is the view I want to animate
@IBOutlet weak var mainContainer: UIView!
@IBOutlet weak var calendarView: JKCalendar!
@IBOutlet weak var arrowImageView: UIImageView!
@IBOutlet weak var mainContainerHeightConstraint: NSLayoutConstraint!
override func awakeFromNib() {
super.awakeFromNib()
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleTap))
mainContainer.addGestureRecognizer(tapGesture)
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
@objc func handleTap(gesture: UITapGestureRecognizer) {
if mainContainerHeightConstraint.constant == 75 {
UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 0.7, initialSpringVelocity: 1, options: .curveEaseOut, animations: {
self.arrowImageView.image = #imageLiteral(resourceName: "up-chevron")
self.mainContainerHeightConstraint.constant = 370
self.calendarView.alpha = 1
})
} else {
defaultConstraint()
}
}
fileprivate func defaultConstraint() {
UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 0.7, initialSpringVelocity: 1, options: .curveEaseOut, animations: {
self.arrowImageView.image = #imageLiteral(resourceName: "down-chevron")
self.mainContainerHeightConstraint.constant = 75
self.calendarView.alpha = 0
})
}
это моя конфигурация для uiview.
Я установил свой mainContainerView сверху, ведя, и трейлинг = 0. и высота = 370.
внутри mainContainerView есть стека ViewView, содержащий еще 2 представления, и установите мой вид стека сверху, трейлинг, низ и ведущий = 0 в mainContainerView
это результат в моем симуляторе
Я до сих пор не могу понять, как настроить tableViewCell, чтобы он автоматически менялся. Пожалуйста, помогите мне:)