2017-10-25 4 views
1

동적 TableView를 만들고 스토리 보드에서 44의 행 높이로 셀을 설정합니다. 그래서 tableview의 높이는 결과에 따라 데이터베이스가 반환하는 행 수를 기반으로합니다. 동시에, 나는 tableView의 맨 아래 제약 조건을 IBOutlet 뷰에 연결하고 있습니다. 따라서 tableview의 높이가 키보드를 덮어 쓰지 않고 일부 구성으로 약간의 거리를 유지합니다. 내 질문은 iOS 10 이하에서 sizeToFits()로 tableView.frame.size.height를 어떻게 업데이트 할 수 있습니까?UiTableview는 iOS 10에서 sizetofit을 업데이트하지 않지만 iOS 11에서 작동합니다.

는 여기에있는 tableview의 sizetofit()가 큰에 작은에서 증가하지 않을 때, tableView and contentView size for iOS 10

또 다른 이미지를 선명한 이미지를 가지고 일부 로그입니다. Another logs, 내 데이터베이스가 0 결과를 반환하면 contentSize가 0.0이 될 것이고, 일부 텍스트를 제거하려고하면 ContentSize가 44로 돌아오고 데이터베이스에서 1 개의 결과가 나오고 오른쪽에서 SizeToFit()가 44로 반환됩니다. contentSize에 따라 크기를 맞 춥니 다. 그러나이 경우 여전히 0.0을 고수하고 결코 업데이트하지 않습니다.

iOS 11, tableView and contentView size for iOS 11에 대한 이미지, 632가있는 tableview의 높이가 정확합니다. 사용자가 tableView 내에서 아래로 스크롤 할 수 있도록 키보드 간섭을 방지하기 위해 자동 레이아웃을 설정했기 때문입니다.

더 나은 이해를위한 몇 가지 코드,

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    // configuration for tableViewCell. 

    tableView.sizeToFit() // WORKs for iOS 11 but doesn't update for iOS10 

    if UIDevice.current.userInterfaceIdiom == .pad { 
     tableView.setNeedsLayout() 
     tableView.layoutIfNeeded() 
     cell.backgroundColor = UIColor.darkGray 
    } 

    return cell 
} 

답변

0

나는 당신이 달성 원하는 작업 모르겠습니다. tableView의 크기를 내용과 같게하려고한다고 가정하면 실제로 UITableView 높이의 제한을 조작해야합니다.

다음에 높이 ()를 설정해야 tableView 데이터 소스를 업데이트 할 수 있습니다. 당신이 sizeToFit()를 사용하는 경우 당신은 또한 수동으로 계산하고 제약 조건을 설정하도록 선택하는 경우이있는 tableView은 dataSource

// using sizeToFit 
func loadData(){ 
    allData = loadFromDatabase() 
    tableView.reloadData() 
    tableView.sizeToFit() 
} 

를 업데이트 한 후 그것을 을해야 당신은

func resizeTableView(){ 
    allData = loadFromDatabase() 
    tableView.reloadData() 
    let tableFrame = tableView.frame 
    tableFrame.size.height = tableView.contentSize.height 
    tableView.frame = tableFrame 
} 

나는 개인적으로 설정됩니다 시도 할 수 있습니다 sizeToFit을 사용할 때보고 된 버그로 인해 sizeToFit 대신 수동으로 또는 제약 조건을 설정하십시오.

관련 문제