Обновление UIimage на основе при вставке элемента в массив - PullRequest
1 голос
/ 05 августа 2020

У меня 4 imageViews. Когда я добавляю цвет в массив for, первый фон представления изображения будет меняться в зависимости от содержимого. Моя цель состоит в том, чтобы всякий раз, когда я добавляю цвет, цвет фона представления изображения будет меняться. Когда я добавляю первый цвет, первое изображение изменится, второй цвет, второе изображение изменится и т.д. c ..

как я могу этого добиться?

Автор создавая коллекцию изображений, можно было бы этого добиться.

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var image1: UIImageView!
    @IBOutlet weak var image2: UIImageView!
    @IBOutlet weak var image3: UIImageView!
    @IBOutlet weak var image4: UIImageView!
    @IBOutlet var images: [UIImageView]!
    
    var colors = ["Green","Red"]
    var forms = [String]()
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }


    @IBAction func buttonPressed(_ sender: UIButton) {
        if let randomColor = colors.randomElement() {
            forms.append(randomColor)
            
                switch forms.last {
                case "Green":
                    image1.backgroundColor = #colorLiteral(red: 0.1960784346, green: 0.3411764801, blue: 0.1019607857, alpha: 1)
                    
                case "L":
                    
                    image1.backgroundColor = #colorLiteral(red: 0.521568656, green: 0.1098039225, blue: 0.05098039284, alpha: 1)
                default:
                    print("Unknow")
                
            }
            
        }
        
    }
    
}

1 Ответ

1 голос
/ 05 августа 2020

Индекс следующего изображения - forms.count-1. Вместо того, чтобы назначать цвет для image1, попробуйте установить цвет images[forms.count-1]:

@IBAction func buttonPressed(_ sender: UIButton) {
    if let randomColor = colors.randomElement() {
        forms.append(randomColor)
        let index = forms.count - 1
        guard index < images.count else {
            // index out of bounds
            return
        }
        switch forms.last {
        case "Green":
            images[index].backgroundColor = #colorLiteral(red: 0.1960784346, green: 0.3411764801, blue: 0.1019607857, alpha: 1)    
        case "Red":
            images[index].backgroundColor = #colorLiteral(red: 0.521568656, green: 0.1098039225, blue: 0.05098039284, alpha: 1)
        default:
            print("Unknow")
            
        }
    }
}

ОБНОВЛЕНИЕ:

Чтобы показать последние 4 элемента, попробуйте этот фрагмент кода:

@IBAction func buttonPressed(_ sender: UIButton) {
    if let randomColor = colors.randomElement() {
        forms.append(randomColor)
        if forms.count > images.count {
            forms.removeFirst()
        }
        for i in 0..<forms.count {
            switch forms[i] {
            case "Green":
                images[i].backgroundColor = #colorLiteral(red: 0.1960784346, green: 0.3411764801, blue: 0.1019607857, alpha: 1)
                
            case "Red":
                
                images[i].backgroundColor = #colorLiteral(red: 0.521568656, green: 0.1098039225, blue: 0.05098039284, alpha: 1)
            default:
                print("Unknow")
                
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...