Множественный взгляд UIImage

В настоящее время у меня есть изображение, установленное в моем UIImageView следующим образом:

art_image.image = UIImage(named:(artworkPin.title!))

где art_image-это представление изображений и artworkPin.название относится к имени изображения. Тем не менее, я хочу добавить второе изображение к UIImageView, если он существует, я думал о программировании его как

       art_image.image = UIImage(named:(artworkPin.title + "1")?)

сработает ли это? В этом случае я бы назвал второе изображение именем первого изображения, но с ‘1’ на конце. Пример: ‘Photo.jpeg » и » Photo1.jpeg ‘ оба будут в представлении изображения, если Photo1.jpeg существовал.

Спасибо за помощь.

2 ответа

  1. вы можете показать только 1 изображение внутри imageivew в то время, так что если у вас есть линии следующим образом:

    art_image.image = UIImage(named:(artworkPin.title!))
    art_image.image = UIImage(named:(artworkPin.title! + "1")?)
    

    art_image будет состоять только из Photo1 при условии, что такое изображение существует и что artworkPin.title unwrapped is also not nil otherwise you could see some different results.

    если вы действительно хотите добавить несколько изображений в представление изображений с целью анимации, необходимо использовать свойство animationImages UIImageView, которое принимает массив UIImages, например

    art_image.animationImages = [UIImage.init(named:"Photo")!, 
                                 UIImage.init(named:"Photo1")!]
    

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

    РЕДАКТИРОВАТЬ

    var imagesListArray = [UIImage]()
    
    for position in 1...5
    {
       if let image = UIImage.init(named: ("Photo\(position)"))
       {
          imagesListArray.append(image)
       }
    }
    
    art_image.animationImages = imagesListArray
    art_image.animationDuration = 3.0
    art_image.startAnimating()
    

    Это был бы более безопасный способ добавить изображения, поэтому он будет добавлять только изображение, если оно не равно нулю и добавляет Photo1, Photo2 ….. Photo5

    Что касается других ваших вопросов:

    Если вы хотите, чтобы пользователь мог

    Что вы подразумеваете под анимацией?
    Я добавил еще две строки кода, и это дает такой результат:

    art_image.animationDuration = 1.0
    art_image.startAnimating()
    

    Это даст вам что-то вроде этого:
    анимация между Photo1, Photo2, Photo3

    Если вы хотите, чтобы пользователь провел пальцем, то вам нужно сделать некоторые изменения, такие как:
    использование scrollview, collectionview например является самым простым или с помощью распознавателя жестов на салфетки вам нужно изменить изображение

    РЕДАКТИРОВАТЬ

    изменение изображения при нажатии кнопки

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

    У меня есть 3 изображения с именем Photo11.png, Photo21.png и Photo31.png и это мой код внутри обработчика кнопок

    @IBAction func buttonTapped(_ sender: UIButton)
    {
        if let image = UIImage.init(named: sender.currentTitle!+"1")
        {
                art_image.image = image
        }
    }
    

    Как вы можете видеть, я устанавливаю изображение с заголовком моей кнопки + «1», так как он отображает либо Photo11.png или Photo21.png etc

  2. Однажды я сам столкнулся с подобной задачей. То, что я сделал, я создал UIScrollViewс рамкой UIImageViewи ее contentSizeбыimageView.frame.size.width * numberOfImages.

    let scrollView = UIScrollView(frame: view.bounds)
    view.addSubview(scrollView)
    
    scrollView.contentSize = CGSize(width: scrollView.bounds.size.width * CGFloat(numberOfImages), height: scrollView.bounds.size.height))
    
    for i in 0...<numberOfImages.count-1 {
        let imageView = UIImageView(frame: CGRect(x: scrollView.bounds.size.width * CGFloat(i), y: scrollView.bounds.origin.y, width: scrollView.bounds.size.width, height: scrollView.bounds.size.height))
        imageView.image = UIImage(named: "artwork" + "\(i)")
        scrollView.addSubview(imageView)
    }
    

    Вы можете анимировать его, чтобы прокрутить, Timerесли хотите.

    scrollView.setContentOffset(scrollPoint, animated: true)