При переходе в альбомный режим ограничения на просмотр таблицы на весь экран - PullRequest
0 голосов
/ 22 ноября 2018

По сути, у меня есть табличное представление, и когда я переключаюсь в альбомную ориентацию, я хочу, чтобы оно установило табличное представление в полноэкранный режим, а когда я переключаю его обратно в книжный режим, оно должно вернуться к ограничениям по умолчанию.Это работает, если я удаляю точку останова.

Однако, когда я переключаю его обратно из альбомного в портретный режим, он не возвращается к значению по умолчанию.Когда я переключаю его обратно в портрет, я редактирую ограничения, чтобы он делал то, что я хочу.Тем не менее, я открыт для других решений.Пожалуйста, посоветуйте мне, что мне делать.Я добавил точку останова, используя UIViewAlertForUnsatisfiableConstraints так же, как это изображение:

breakpoint log

override func viewDidLoad() {
   super.viewDidLoad()
   parseData(noOfPosts:90)

   TableView.delegate = self
   TableView.dataSource = self
   TableView.tableFooterView = UIView()

   let myTop2Constraint:NSLayoutConstraint = TableView.topAnchor.constraint(equalTo: view.topAnchor, constant: 50)
   let myBtm2Constraint:NSLayoutConstraint = TableView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 50)

   myTop2Constraint.isActive = true
   myBtm2Constraint.isActive = true

   if(UIDevice.current.orientation.isLandscape){
      myTop2Constraint.isActive = false
      myBtm2Constraint.isActive = false
   }
}

override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) {
   let myTop2Constraint:NSLayoutConstraint = TableView.topAnchor.constraint(equalTo: view.topAnchor, constant: 50)
   let myBtm2Constraint:NSLayoutConstraint = TableView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 50)
   let myTopConstraint:NSLayoutConstraint = TableView.topAnchor.constraint(equalTo: view.topAnchor, constant: 0)
   let myBtmConstraint:NSLayoutConstraint = TableView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 0)

   myTopConstraint.isActive = false
   myBtmConstraint.isActive = false
   myTop2Constraint.isActive = false
   myBtm2Constraint.isActive = false

   if(UIDevice.current.orientation.isLandscape){
      self.catIsuSemasa.isHidden = true
      self.catOthers.isHidden = true
      self.catSocial.isHidden = true
      self.catPolitics.isHidden = true
      if(myTop2Constraint.isActive){
         print("error1?")
         myTop2Constraint.isActive = false
         print("error2?")
         myBtm2Constraint.isActive = false
         print("error3?")
         myTopConstraint.isActive = true
         myBtmConstraint.isActive = true
      }else{
         TableView.removeAllConstraints()
         myTopConstraint.isActive = true
         myBtmConstraint.isActive = true
      }
   }else{
      self.catIsuSemasa.isHidden = false
      self.catOthers.isHidden = false
      self.catSocial.isHidden = false
      self.catPolitics.isHidden = false
      if(myTopConstraint.isActive){
         print("error")
         myTopConstraint.isActive = false
         print("error2")
         myBtmConstraint.isActive = false
         print("error3")
         myTop2Constraint.isActive = true
         print("error4")
         myBtm2Constraint.isActive = true
         print("run?")
      }
   }
}

extension UIView {
    func removeAllConstraints() {
        self.removeConstraints(self.constraints)
        for view in self.subviews {
            view.removeAllConstraints()
        }
    }
}

1 Ответ

0 голосов
/ 22 ноября 2018

Приложение поддерживает альбомную и портретную ориентацию, тогда нам не нужно устанавливать ограничения программно, мы можем достичь того же самого, используя класс размеров раскадровки (различаются по чертам).Используя класс размера, мы можем создать адаптивный дизайн макета.мы можем установить различные ограничения для ландшафтного и портретного приложения.

Пожалуйста, проверьте ниже ссылку учебника:

Ссылка учебника

...