Tocropviewcontroller: Неправильно ли safeAreaInsets?

Созданный на 25 сент. 2019  ·  14Комментарии  ·  Источник: TimOliver/TOCropViewController

Спасибо за отличную библиотеку! 👍

Чего именно вы пытаетесь достичь с помощью этой библиотеки?
У меня только один вопрос. Положение панели инструментов слишком близко к низу:

Неправильный ли файл safeAreaInsets.bottom?

Нужен воспроизводимый пример проекта? TestSafeArea.zip

Самый полезный комментарий

Привет @ zhangao0086! Извините за задержку!

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

Я думаю, что исправил это. Это был еще один побочный эффект нового модального дисплея iOS 13. Оказывается, если вы не установите modalPresentationStyle в .fullScreen , контроллер представления, похоже, не подчиняется вставкам.

Я еще не отправил новую версию модуля (мой CI-сервер упал, когда я обновил его до Catalina. 😅), но я добавил флаг .fullScreen в главную ветку. Не могли бы вы попробовать получить от мастера и посмотреть, работает ли это для вас сейчас?

Синтаксис для получения от мастера через CocoaPods:

pod 'CropViewController', :git => 'https://github.com/TimOliver/TOCropViewController.git'

Спасибо!

Все 14 Комментарий

@ zhangao0086 такая же проблема здесь на iOS13, также когда вы нажимаете Отмена, приложение вылетает .. какие-нибудь обновления по этому поводу?

пинг...

Всем привет!
Причина в настраиваемом переходе VC CropViewController. Чтобы решить эту проблему, мы должны изучить различия в iOS13, связанные с переходом или .... просто отключите его :)
файл: CropViewController.swift, строка: 561.

fileprivate func setUpCropController() {
        addChild(toCropViewController)
        transitioningDelegate = (toCropViewController as! UIViewControllerTransitioningDelegate)
        toCropViewController.delegate = self
        toCropViewController.didMove(toParent: self)
    }

Чтобы использовать переход по умолчанию, мы можем прокомментировать / удалить эту строку:

transitioningDelegate = (toCropViewController as! UIViewControllerTransitioningDelegate)

Я не думаю, что эта проблема связана только с пользовательским переходом. Я представляю контроллер, нажимая его из UIImagePickerController во всплывающем окне. Всплывающее окно в iOS 13 включает стрелку в представлении, поэтому теперь этот контроллер считает, что она больше, чем есть на самом деле, и занимает дополнительное место для стрелки. Итак, если стрелка находится справа, содержимое этого контроллера просачивается за пределы экрана с правой стороны и т. Д. Что-то нужно изменить с помощью безопасной области, но я не уверен, что бы это исправить - тем более, что все это делается программно. и здесь задействовано несколько точек зрения.

Я считаю, что safeAreaLayoutGuide нужно как-то использовать, где-то, чтобы это исправить. Я только что просмотрел код, и похоже, что он нигде не включен. Жаль, что я не могу больше помочь. Вот еще пара мест, где люди сталкиваются с этой проблемой, которые также включают некоторые способы ее решения:

https://stackoverflow.com/questions/57988889/ios-13-uipopoverpresentationcontroller-sourceview-content-visible-in-the-arrow

https://stackoverflow.com/questions/57866771/ios-problem-of-display-the-popover-border-in-the-ios13

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

Есть новости по этому поводу? @TimOliver

Привет @ zhangao0086. Большое спасибо за исчерпывающий образец приложения!

Сейчас я занят тушением пожаров iOS 13 в некоторых других моих проектах, поэтому у меня еще не было возможности взглянуть на это. Извините!

Я изучу это, когда смогу. А пока, если кто-нибудь найдет исправление и сможет отправить PR, это будет очень признательно!

Изначально я сделал CropViewController отдельным контроллером представления, поскольку в то время было невозможно преобразовать весь интерфейс Objective-C TOCropViewController в Swift. Но я думаю, что совместимость улучшилась до такой степени, что теперь мы потенциально можем отказаться от оболочки. Надеюсь, это предотвратит подобные проблемы в будущем.

@TimOliver Спасибо за ответ! Я тебя полностью понимаю😃

Привет @ zhangao0086! Извините за задержку!

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

Я думаю, что исправил это. Это был еще один побочный эффект нового модального дисплея iOS 13. Оказывается, если вы не установите modalPresentationStyle в .fullScreen , контроллер представления, похоже, не подчиняется вставкам.

Я еще не отправил новую версию модуля (мой CI-сервер упал, когда я обновил его до Catalina. 😅), но я добавил флаг .fullScreen в главную ветку. Не могли бы вы попробовать получить от мастера и посмотреть, работает ли это для вас сейчас?

Синтаксис для получения от мастера через CocoaPods:

pod 'CropViewController', :git => 'https://github.com/TimOliver/TOCropViewController.git'

Спасибо!

@TimOliver Спасибо за отличную работу!

Чудесно! Он работает именно так, как я ожидал! 👍

Мне также пришлось установить cropViewController.modalPresentationStyle = .fullScreen в моем коде (а не просто обновить до основной ветки). Добавление примечания сюда, поскольку это было мне непонятно

Это исправление работает только для кода Swift. Кто-нибудь знает, почему он не работает в объекте C?

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

ClaesClaes picture ClaesClaes  ·  6Комментарии

felipebonezi picture felipebonezi  ·  6Комментарии

agusguerra10 picture agusguerra10  ·  5Комментарии

muranobu picture muranobu  ·  4Комментарии

ntnmrndn picture ntnmrndn  ·  4Комментарии