Добавление и удаление UIStackViews портит мой UIScrollView - PullRequest
0 голосов
/ 11 сентября 2018

Всякий раз, когда я использую окно выбора для переключения видов с Auto Rent на Schedule Rent, оно работает отлично. Это когда я переключаюсь с аренды расписания на автоматическую аренду, появляется эта черная полоса Я приложил иерархию моего представления контента. Я думал, что это связано с предыдущими добавленными ограничениями, поэтому я удаляю StackView всякий раз, когда выбирается одно представление. Например, если выбрано «Автоматическая аренда», я удаляю StackView, в котором находится представление «Расписание»:

//Holds Temp Stackviews
var stackViewHolder1: UIView?
var stackViewHolder2: UIView?
 override func viewDidLoad() {
    super.viewDidLoad()


    stackViewHolder1 = stackViewMain.arrangedSubviews[0]
    stackViewHolder2 = stackViewMain.arrangedSubviews[1]
 }

if txtRentType.text == "Auto Rent" {
   let tempView = stackViewHolder1
   let tempView1 = stackViewHolder2
   tempView!.isHidden = true
   stackViewMain.removeArrangedSubview(tempView!)
   if(tempView1!.isHidden == true){
       tempView1!.isHidden = false
       stackViewMain.addArrangedSubview(tempView1!)
   }
else{

      let tempView = stackViewHolder1
      let tempView1 = stackViewHolder2

      tempView1!.isHidden = true
      stackViewMain.removeArrangedSubview(tempView1!)

      if(tempView!.isHidden == true){
          tempView!.isHidden = false
          stackViewMain.addArrangedSubview(tempView!)
      }

    }

Я попытался удалить один вид и переключить только один вид, который скрыт, и это устраняет проблему с черной полосой. Нет никаких ограничений в отношении stackViews и Content View.

EDIT: enter image description here

Выделенный экран - это scrollView. Следующим является contentView. UIWindow становится черным в спине.

enter image description here

Моя строка заголовка вверху каким-то образом оказывается посередине.

Ответы [ 3 ]

0 голосов
/ 12 сентября 2018

вы прикрепляете свои скроллвью и просмотр контента к нижней части с ограничениями?

Если представление содержимого является представлением стека, вы можете прикрепить его к основанию, а также с ограничениями макета и поиграть с распределением содержимого.

0 голосов
/ 13 сентября 2018

Вам не нужно использовать удаление / добавление упорядоченных подпредставлений.

при скрытии представления в stackView оно автоматически удаляется.

так что я думаю, что вы можете просто скрыть или показать stackViewMain.subviews [0] o stackViewMain.subviews [1]

Я с objc, может быть, я совершил ошибку, но это было бы что-то вроде этого:

if txtRentType.text == "Auto Rent" {
       stackViewMain.arrangedSubviews[0].isHidden = true;
       stackViewMain.arrangedSubviews[1].isHidden = false;
}else{
       stackViewMain.arrangedSubviews[1].isHidden = true;
       stackViewMain.arrangedSubviews[0].isHidden = false;
}
0 голосов
/ 11 сентября 2018

Вы можете попытаться изменить свойство распределения стека

 stack.distribution = .equalCentering

После того, как вам не нужно будет использовать это:

 .removeArrangedSubview()
 .addArrangedSubview()

Когда вы скрываете некоторое представление, другое представление занимает все пространство вашего стека, вам не нужно обновлять свои ограничения. Вы можете попробовать его в конструкторе интерфейсов, чтобы увидеть, как он работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...