#swift #uitableview #ios15
#быстрый #uitableview #ios15
Вопрос:
Я создал пользовательское представление разделителя для своей ячейки UITableViewCell. В iOS 15 представление разделителя остается скрытым, но до iOS 15 оно работает хорошо. В чем может быть причина этой проблемы?
Представление разделителя остается скрытым в iOS 15
var countArray = [0,0,0,0] { didSet { if isFailed { isLoading = false numberOfRows = 5 let addBy = 44 tableView.snp.updateConstraints { (make) in make.height.equalTo(286 addBy) } layoutIfNeeded() } else if !(shouldShowFetchMoreCards ?? false) { tableView.snp.updateConstraints { (make) in make.height.equalTo(286) } layoutIfNeeded() numberOfRows = 4 } else if let unread = countArray.last { numberOfRows = unread == 0 ? 5 : 4 let addBy = unread == 0 ? 44 : 0 tableView.snp.updateConstraints { (make) in make.height.equalTo(286 addBy) } layoutIfNeeded() } else { tableView.snp.updateConstraints { (make) in make.height.equalTo(286) } layoutIfNeeded() numberOfRows = 4 } if let x = superview as? UITableView { x.beginUpdates() x.endUpdates() } } } var numberOfRows = 4 { didSet { isLoading = (countArray.first ?? 0) == 0 tableView.reloadData() } } var isLoading: Bool = true var isFailed: Bool = false { didSet { if isFailed { isLoading = false numberOfRows = 5 let addBy = 44 tableView.snp.updateConstraints { (make) in make.height.equalTo(286 addBy) } layoutIfNeeded() } else { isLoading = true tableView.snp.updateConstraints { (make) in make.height.equalTo(286) } layoutIfNeeded() numberOfRows = 4 } if let x = superview as? UITableView { x.beginUpdates() x.endUpdates() } } } lazy var tableView: UITableView = { let tv = UITableView() tv.separatorStyle = .none tv.estimatedRowHeight = 60 tv.rowHeight = UITableView.automaticDimension tv.register(NewGoalTableViewCell.self, forCellReuseIdentifier: "cell") tv.register(UITableViewCell.self, forCellReuseIdentifier: "fetch") tv.register(LibraryHeaderTVView.self, forHeaderFooterViewReuseIdentifier: "header") tv.backgroundColor = .clear tv.delegate = self tv.dataSource = self tv.isScrollEnabled = false return tv }() func setupViews() { if #available(iOS 15.0, *) { tableView.sectionHeaderTopPadding = .zero } backgroundColor = .clear self.contentView.addSubview(containerView) self.contentView.addSubview(tableView) tableView.snp.makeConstraints { (make) in make.top.equalTo(self.contentView).offset(2) make.height.equalTo(286) make.left.equalTo(self.contentView).offset(padding) make.right.equalTo(self.contentView).offset(-padding) make.bottom.equalTo(self.contentView).offset(-2) } containerView.snp.makeConstraints { (make) in make.left.equalTo(tableView) make.right.equalTo(tableView) make.top.bottom.equalTo(self.contentView) } layoutIfNeeded() } extension GoalListTVCell: UITableViewDelegate, UITableViewDataSource { func numberOfSections(in tableView: UITableView) -gt; Int { return 1 } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -gt; Int { return numberOfRows } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -gt; UITableViewCell { if indexPath.row == 4 { let cell = tableView.dequeueReusableCell(withIdentifier: "fetch", for: indexPath) cell.selectionStyle = .default let v = UIView() v.backgroundColor = .lightGray v.alpha = 0.75 cell.addSubview(v) v.snp.makeConstraints { (make) in make.left.equalTo(cell).offset(3*padding 35) make.right.equalTo(cell).offset(-padding) make.top.equalTo(cell) make.height.equalTo(0.5) } cell.textLabel?.text = isFailed ? " FAILED, CLICK TO TRY AGAIN!" : " FETCH MORE CARDS" cell.textLabel?.font = TextProperty.likes.font cell.textLabel?.textColor = isFailed ? Color.incorrectAnswer.value : Color.theme.value cell.accessoryType = isFailed ? .none : .disclosureIndicator return cell } guard let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as? NewGoalTableViewCell else { return UITableViewCell() } cell.goal = goals[indexPath.row] if isFailed { cell.timer?.invalidate() cell.countLabel.text = "Oh snap, failed!" } else if !isLoading { cell.timer?.invalidate() cell.countLabel.text = "(countArray[indexPath.row])" } else { cell.startTimer() cell.countLabel.text = "Loading." } if indexPath.row == 3 { cell.separatorView.isHidden = true } return cell } func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -gt; UIView? { return tableView.dequeueReusableHeaderFooterView(withIdentifier: "header") as! LibraryHeaderTVView } func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -gt; CGFloat { return 30 } }
Каковы изменения в UITableViewCell и UITableView в отношении iOS 15? Есть ли какая-либо статья, касающаяся этого, чтобы узнать больше об их конкретных изменениях?