Как заставить всплывающее окно iOS правильно располагаться внутри пузыряIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Гость
 Как заставить всплывающее окно iOS правильно располагаться внутри пузыря

Сообщение Гость »


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


Изображение

Изображение


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

В раскадровке просто есть popupView с ограничениями для его центрирования по горизонтали и вертикали в представлении сцены:


Изображение


А вот мой код... Обратите внимание, я включил рамку вокруг представления, чтобы подчеркнуть сдвиг.

// Внутри коллекцииView:didSelectItemAtIndexPath: UIStoryboard* mainStoryboard = [UIStoryboard StoryboardWithName:@"Main" Bundle:nil]; MenuUnavailableViewController* muc = [mainStoryboard InstantiateViewControllerWithIdentifier:@"MenuOptionUnavailable"]; muc.modalPresentationStyle = UIModalPresentationPopover; [самопредставлениеViewController: muc анимированный: НЕТ завершения: ноль]; MenuCollectionViewCell* menuCell = (MenuCollectionViewCell*) [menuCollection cellForItemAtIndexPath:indexPath]; muc.popoverPresentationController.sourceView = menuCollection; muc.popoverPresentationController.sourceRect = menuCell.frame; muc.popoverPresentationController.permitedArrowDirections = UIPopoverArrowDirectionAny; @implementation MenuUnavailableViewController - (void) viewWillAppear:(BOOL)animated { [супер viewWillAppear: анимированный]; [self.view layoutSubviews]; self.preferredContentSize = self.popupView.bounds.size; self.popupView.layer.borderColor = [UIColor blackColor].CGColor; self.popupView.layer.borderWidth = 2; self.popupView.layer.cornerRadius = 12; } Я довольно долго успешно создавал поповеры, используя эту формулу, а затем однажды какое-то обновление iOS или Xcode незаметно нарушило позиционирование (не уверен, но думаю, это было где-то в iOS 13 или 14). Кто-нибудь знает, что я делаю неправильно? Я искал полный пример реализации всплывающих окон в последней версии iOS, но нигде его не нашел.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»