Я пытаюсь написать свое собственное меню iOS, и там у меня есть горизонтальный UITableView как подзаголовок моего пользовательского UIView (мое меню). Теперь в layoutSubviews() я должен выложить свой UITableView (я использую NSLayoutConstraint.constraintsWithVisualFormat для всех других подзаголовков), но проблема в том, что высота tableViews на самом деле является «шириной», потому что она была повернута боком 90 градусов с myTableView.transform = CGAffineTransformMakeRotation (-CGFloat (M_PI_2)).iOS: как программировать автоматическую компоновку горизонтального представления таблицы?
Мои layoutSubviews():
override func layoutSubviews() {
super.layoutSubviews()
let viewsDictionary = ["navigationTableView":navigationTableView, "settingsTableView":settingsTableView, "settingsTableViewContainerView":settingsTableViewContainerView, "settingsViewContainerView":settingsViewContainerView]
let metricsDictionary = ["navigationTableViewHeight":100.0, "settingsTableViewContainerViewHeight":70.0, "settingsViewContainerViewHeight":0.0, "viewWidth":screen.bounds.width]
navigationTableView.setTranslatesAutoresizingMaskIntoConstraints(false)
settingsTableView.setTranslatesAutoresizingMaskIntoConstraints(false)
settingsViewContainerView.setTranslatesAutoresizingMaskIntoConstraints(false)
settingsTableViewContainerView.setTranslatesAutoresizingMaskIntoConstraints(false)
// sizing constraints
// navigationTableView
let navigationTableView_constraint_H: Array = NSLayoutConstraint.constraintsWithVisualFormat("H:[navigationTableView(viewWidth)]", options: NSLayoutFormatOptions(0), metrics: metricsDictionary, views: viewsDictionary)
let navigationTableView_constraint_V: Array = NSLayoutConstraint.constraintsWithVisualFormat("V:[navigationTableView(>=navigationTableViewHeight)]", options: NSLayoutFormatOptions(0), metrics: metricsDictionary, views: viewsDictionary)
navigationTableView.addConstraints(navigationTableView_constraint_H)
navigationTableView.addConstraints(navigationTableView_constraint_V)
// settingsTableViewContainerView
let settingsTableViewContainerView_constraint_H: Array = NSLayoutConstraint.constraintsWithVisualFormat("H:[settingsTableViewContainerView(viewWidth)]", options: NSLayoutFormatOptions(0), metrics: metricsDictionary, views: viewsDictionary)
let settingsTableViewContainerView_constraint_V: Array = NSLayoutConstraint.constraintsWithVisualFormat("V:[settingsTableViewContainerView(settingsTableViewContainerViewHeight)]", options: NSLayoutFormatOptions(0), metrics: metricsDictionary, views: viewsDictionary)
settingsTableViewContainerView.addConstraints(settingsTableViewContainerView_constraint_H)
settingsTableViewContainerView.addConstraints(settingsTableViewContainerView_constraint_V)
// settingsTableView
/*let settingsTableView_constraint_H: Array = NSLayoutConstraint.constraintsWithVisualFormat("H:[settingsTableView(settingsTableViewContainerViewHeight)]", options: NSLayoutFormatOptions(0), metrics: metricsDictionary, views: viewsDictionary)
let settingsTableView_constraint_V: Array = NSLayoutConstraint.constraintsWithVisualFormat("V:[settingsTableView(viewWidth)]", options: NSLayoutFormatOptions(0), metrics: metricsDictionary, views: viewsDictionary)
settingsTableView.addConstraints(settingsTableView_constraint_H)
settingsTableView.addConstraints(settingsTableView_constraint_V)*/
// settingsViewContainerView
let settingsViewContainerView_constraint_H: Array = NSLayoutConstraint.constraintsWithVisualFormat("H:[settingsViewContainerView(viewWidth)]", options: NSLayoutFormatOptions(0), metrics: metricsDictionary, views: viewsDictionary)
let settingsViewContainerView_constraint_V: Array = NSLayoutConstraint.constraintsWithVisualFormat("V:[settingsViewContainerView(settingsViewContainerViewHeight)]", options: NSLayoutFormatOptions(0), metrics: metricsDictionary, views: viewsDictionary)
settingsViewContainerView.addConstraints(settingsViewContainerView_constraint_H)
settingsViewContainerView.addConstraints(settingsViewContainerView_constraint_V)
switch settingsTableViewPosition {
case .Top:
//Todo
break
case .Bottom:
// positioning
let settingsTableView_constraint_H: Array = NSLayoutConstraint.constraintsWithVisualFormat("H:|[settingsTableView]|", options: NSLayoutFormatOptions(0), metrics: metricsDictionary, views: viewsDictionary)
let settingsTableView_constraint_V: Array = NSLayoutConstraint.constraintsWithVisualFormat("V:|[settingsTableView]|", options: NSLayoutFormatOptions(0), metrics: metricsDictionary, views: viewsDictionary)
settingsTableViewContainerView.addConstraints(settingsTableView_constraint_H)
settingsTableViewContainerView.addConstraints(settingsTableView_constraint_V)
let view_constraint_H_navigationTableView: Array = NSLayoutConstraint.constraintsWithVisualFormat("H:|[navigationTableView]|", options: NSLayoutFormatOptions(0), metrics: metricsDictionary, views: viewsDictionary)
let view_constraint_H_settingsTableView: Array = NSLayoutConstraint.constraintsWithVisualFormat("H:|[settingsTableViewContainerView]|", options: NSLayoutFormatOptions(0), metrics: metricsDictionary, views: viewsDictionary)
let view_constraint_H_settingsViewContainerView: Array = NSLayoutConstraint.constraintsWithVisualFormat("H:|[settingsViewContainerView]|", options: NSLayoutFormatOptions(0), metrics: metricsDictionary, views: viewsDictionary)
let view_constraint_V: Array = NSLayoutConstraint.constraintsWithVisualFormat("V:|[navigationTableView][settingsTableViewContainerView][settingsViewContainerView]|", options: NSLayoutFormatOptions(0), metrics: metricsDictionary, views: viewsDictionary)
self.addConstraints(view_constraint_H_settingsTableView)
self.addConstraints(view_constraint_H_navigationTableView)
self.addConstraints(view_constraint_H_settingsViewContainerView)
self.addConstraints(view_constraint_V)
break
}
}
Спасибо за ваш ответ, но я уже протестировал то, что вы предлагаете, и проблема в том, что UITableView .Top - это где .Trailing должно быть после того, как оно повернуто на 90 градусов. Но я проверю UICollectionView, и если это не сработает для меня, я напишу свой собственный UIHorizontalTableView, унаследованный от UIScrollView –