To jest testowane z najnowszą wersją Xcode.
1) W Xcode przejdź do storyboardu i kliknij widok stołu, aby go wybrać.
2) W panelu Narzędzia (patrz rysunek 1) upewnij się, że zdefiniowano ograniczenie dla wysokości widoku tabeli.
3) w widoku kontrolera, który wyświetla widok tabeli tworzą wylot tego ograniczenia:
Swift 3
@IBOutlet weak var dynamicTVHeight: NSLayoutConstraint!
W celu C
@property (strong, nonatomic) IBOutlet NSLayoutConstraint *dynamicTVHeight;
4) W scenorysie wróć do ograniczenia wysokości dla UITableView
i upewnij się, że ikona w prawym zmienił kolor z fioletowego na niebieski (patrz rysunek 2)
4) również umieścić ten kod w tym samym kontrolerze widoku:
Swift
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
tableView.reloadData()
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let height = min(self.view.bounds.size.height, tableView.contentSize.height)
dynamicTVHeight.constant = height
self.view.layoutIfNeeded()
}
Cel C
- (void)viewWillAppear:(BOOL)animated
{
// just add this line to the end of this method or create it if it does not exist
[self.tableView reloadData];
}
-(void)viewDidLayoutSubviews
{
CGFloat height = MIN(self.view.bounds.size.height, self.tableView.contentSize.height);
self.dynamicTVHeight.constant = height;
[self.view layoutIfNeeded];
}
T jego powinien rozwiązać twój problem.
Są to linki do dwóch wersji przykładowego projektu, który robi to, co chcesz, jeden do Celu C, a drugi do Swift 3. Pobierz go i przetestuj przy pomocy Xcode. Oba projekty działają z najnowszą wersją Xcode, Xcode 8.3.2.
https://github.com/jcatalan007/TestTableviewAutolayout https://github.com/jcatalan007/TestTableviewAutolayoutSwift
można podać granice chcesz? Na przykład od 200 punktów do 400 punktów. –
Właściwie nie mam ograniczeń. Ponieważ nie może być żadnych wierszy lub może być 10 wierszy. – Burak
Powiedziałeś, że chcesz mieć rozmiar dynamiczny, co oznacza, że zmienia się rozmiar. Jeśli stół ma 0 rzędów, których wysokości chcesz? Czy stół może zajmować cały ekran, czy też ograniczyć go do określonego rozmiaru? –