ios - 将项目插入数组时基于更新 UIimage

标签 ios swift

我有 4 个 ImageView 。当我在 for, 数组中添加颜色时,第一个 ImageView 背景将根据内容发生变化。我的目标是每当我添加颜色时, ImageView 背景颜色都会改变。当我添加第一种颜色时,第一个 ImageView 会改变,第二个颜色,第二个 ImageView 会改变等等。
我怎么能做到呢?
通过创建 ImageView 的集合来实现它是可能的。

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")
                
            }
            
        }
        
    }
    
}

最佳答案

下一张图片的索引是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")
                
            }
        }
    }
}

关于ios - 将项目插入数组时基于更新 UIimage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63256001/

相关文章:

swift - 创建 SCNNode 的子类

ios - UITextView 在图像附件上时不可滚动

ios - 在同一个 View Controller 上使用 Swift 中的 2 个 pickerviews 时,我只看到 ?-s,如何解决这个问题?

swift - 为什么我的 JTAppleCalendar 提前 1 天?

ios - 如何检测滑动方向?

swift - 在 appDelegate 中设置 UITabBarItem 徽章值

ios - 删除/停止 dispatch_async iOS

ios - 第三方库依赖版本控制策略

ios - KVO 属性列表?

ios - 如何清除 iOS 中的推送通知角标(Badge)计数?