Как изменить констрейнт


#61

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

Но вот что происходит при оконном режиме

Я думал что это из-за удаление SceneDelegate… но вроде как нет… или я чето не шарю. Я вернул сцен-делегейт и инициализировался оттуда , чтобы проверить, результат такой же…


#62

Забыл вернуть методы в AppDelegate. Проблема решила, НО ЧАСТИНО.

В таком режиме нормально…

А вот тут что-то еще не так пошло…

Кнопки были сделаны через коллекцию.
КОнстрейнты там адаптивные


#63

Обнаружил что работает иначе: первое состояние в котором я запущу приложение - он его и запоминает. А остальные будут как-будто с не обновленными констрейнтами


#64

Аааа, это проблема в коллекции, ее надо как-то перезапустить, а как без понятия… Ибо там ширина кнопки рассчитывается от ширины экрана

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    
    let width: CGFloat = superView.frame.size.width / 5
    let height: CGFloat = superView.frame.size.height
    
    return CGSize(width: width, height: height)
}

Как заставить этот метод перезапуститься?)


#65

[РЕШЕНО]

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator)
{
    super.viewWillTransition(to: size, with: coordinator)

    cellWidth = superView.frame.size.width / 5
    flowLayout.invalidateLayout()
}

Нужно было добавить это к UIViewController.
Прочитать можно в документации что происходит тут (для тех кто столкнется)