2017-02-08 8 views
0

Я пытаюсь автоматически настроить высоту таблицы в моем проекте, определив, какой iPhone у пользователя есть. Однако я не совсем уверен, как я буду действовать, чтобы настроить высоту. Я пробовал несколько методов, таких как self.tableView.rowHeight = 100 и т. Д., Но не повезло.Отрегулируйте высоту таблицы по коду в Swift

Может ли кто-нибудь указать мне в правильном направлении?

Заранее спасибо.

Table view constraints

Table view constraints

+0

вы используете UITableViewController или UIViewController с табличным представлением, которое вы положили туда сами? – Ocunidee

+0

@Ocunidee Я использую табличное представление, которое я вложил в себя. – askaale

+0

вы можете показать изображение ограничений, которые вы вкладываете в раскадровку или если вы сделали по коду, фрагменты? – Ocunidee

ответ

0

Пожалуйста, этот метод два делегата Tableview в контроллере представления

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
    return UITableViewAutomaticDimension 
} 

func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { 
    return UITableViewAutomaticDimension 
} 
1

Первая создать расширение для обнаружения которой iPhone работает приложение:

extension UIDevice { 
    var iPhone: Bool { 
     return UIDevice().userInterfaceIdiom == .phone 
    } 
    enum ScreenType { 
     case iPhone4 
     case iPhone5 
     case iPhone6 
     case iPhone6Plus 
     case unknown 
    } 
    var screenType: ScreenType { 
     guard iPhone else { return .unknown } 
     switch UIScreen.main.nativeBounds.height { 
     case 960: 
      return .iPhone4 
     case 1136: 
      return .iPhone5 
     case 1334: 
      return .iPhone6 
     case 2208: 
      return .iPhone6Plus 
     default: 
      return .unknown 
     } 
    } 
} 

Затем, в лету ур контроллер, связать Tableview делегата, если вы не сделали это еще:

override func viewDidLoad() { 
    super.viewDidLoad() 

    tableView.delegate = self 
    tableView.dataSource = self 
} 

Реализовать метод делегата, как так, чтобы отрегулировать высоту ячейки в зависимости от типа iphone:

extension YourViewController: UITableViewDelegate { 
    override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
     switch UIDevice().screenType { 
     case .iPhone4: 
      return 40 
     default: 
      return 60 
     } 
    } 
} 
+0

Большое вам спасибо за это, однако - я действительно ищу способ отрегулировать высоту стола, а не ячейку. В любом случае, это замечательно, и спасибо за то, что поделились! Я ценю вашу помощь! – askaale

+0

Вы только что сказали обратное в предыдущем комментарии. Пожалуйста, уточните, что вам нужно. :) –

+0

Прошу прощения, если я не понял, что я имел в виду; если бы я должен был изменить высоту каждой ячейки таблицы, округленный UIButton внутри каждой ячейки уменьшался бы, и это выглядело бы неплохо. Сожалею! :-) – askaale