최근에 일부 코드를 새로운 iOS 11 베타 5 SDK로 마이그레이션했습니다.
이제 UITableView에서 매우 혼란스러운 동작을 얻습니다. tableview 자체는 그렇게 화려하지 않습니다. 사용자 지정 셀이 있지만 대부분의 경우 높이입니다.
내 뷰 컨트롤러를 tableview와 함께 누르면 셀이 "스크롤 업"(또는 전체 테이블 뷰 프레임이 변경됨) 및 푸시 / 팝 탐색 애니메이션을 따라 아래로 이동하는 추가 애니메이션이 표시됩니다. gif를 참조하십시오 :
나는 수동으로 만들 tableview
에 loadView
있는 tableview의 슈퍼 뷰의 선도, 뒤, 위, 아래 동일하게 방법 및 설정 자동 레이아웃 제약. 수퍼 뷰는 뷰 컨트롤러의 루트 뷰입니다.
뷰 컨트롤러 푸시 코드는 매우 표준 적입니다. self.navigationController?.pushViewController(notifVC, animated: true)
동일한 코드가 iOS 10에서 정상적인 동작을 제공합니다.
무엇이 잘못되었는지 알려주시겠습니까?
편집 : 매우 간단한 테이블 뷰 컨트롤러를 만들었으며 동일한 동작을 재현 할 수 있습니다. 암호:
class VerySimpleTableViewController : UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 4
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
cell.textLabel?.text = String(indexPath.row)
cell.accessoryType = .disclosureIndicator
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
let vc = VerySimpleTableViewController.init(style: .grouped)
self.navigationController?.pushViewController(vc, animated: true)
}
}
편집 2 : UINavigationBar의 사용자 지정으로 문제를 좁힐 수있었습니다. 다음과 같은 사용자 정의가 있습니다.
rootNavController.navigationBar.setBackgroundImage(createFilledImage(withColor: .white, size: 1), for: .default)
여기서 createFilledImage
주어진 크기와 색상 사각형 이미지를 만듭니다.
이 줄을 주석 처리하면 정상적인 동작으로 돌아갑니다.
이 문제에 대한 의견을 부탁드립니다.
navigationBar.isTranslucent
에를 false
, 그렇지 않으면 벌금을 작동합니다.