Swift - Представление нескольких предупреждений одновременно

Я делаю приложение и хочу создать собственное оповещение. Я нашел следующий способ сделать это:

  1. Создайте контроллер представления в раскадровке и установите его идентификатор.
  2. Установите его фон, чтобы очистить.
  3. Создайте в нем представление и установите все кнопки и метки.
  4. Вызовите его с другого контроллера следующим образом:

    let alertViewController = self.storyboard.instantiateViewControllerWithIdentifier("alertViewController") as! AlertViewController
    
    self.presentViewController(alertViewController, animated: true, completion: nil)
    

Но я хочу представить несколько предупреждений одновременно, например:

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

2 ответа

Похоже, что это модальный ViewController с UIVisualEffectView для фона, поэтому размытие фона. Затем необходимо создать массив сообщений с предупреждениями, для каждого сообщения вы добавляете одно представление предупреждений с этим сообщением в контроллер представления. Каждое представление сообщения должно иметь ограничения ширины, константы высоты, centerX для суперпредставления и centerY для суперпредставления. Затем вы можете установить преобразование каждого представления, чтобы уменьшить его и переместить вверх на основе его индекса в массиве сообщений. Что-то вроде yOffset = (messages.count - index) * интервал и масштаб = exp(0,95, (messages.count - index)). Сообщение в начале имеет матрицу идентичности для его преобразования. Когда вы отклоняете сообщения, анимируйте изменения преобразования, чтобы они все увеличивались и опускались.

Существует ли максимальное количество одновременно отображаемых предупреждений? Если да, сколько это?

Я бы предложил сделать это не используя UIViewController но проще: используя UIView, И вы можете показать их все на вашем текущем ViewController.

Как создать кастом UIView: ссылка.

Надеюсь, поможет.

Другие вопросы по тегам