ios - 使用 UIImageView repeatedValue() 初始化 Swift 数组似乎不起作用

标签 ios arrays uiview uiimageview initialization

我正在尝试以编程方式创建一个 5 UIImageView,将它们作为 subview 连续添加到 init(frame:)UIView 方法中>。当我运行代码时,只显示最后一个 ImageView 。前 4 个缺失。

我正在使用 repeatedValue: 初始化一个 UIImageView 数组。
这是对初始化方法的正确使用吗?

这是我使用的代码:

导入 UIKit

class DistanceView: UIView {

override init(frame: CGRect) {
    super.init(frame: frame)
    print("init frame called")

    let distances = [UIImageView](count: 5, repeatedValue: UIImageView())
    distances[0].image=UIImage(named: "1")
    distances[1].image=UIImage(named: "2")
    distances[2].image=UIImage(named: "3")
    distances[3].image=UIImage(named: "4")
    distances[4].image=UIImage(named: "5")

    for var i = 0; i<5; i++ {
        distances[i].frame=CGRectMake(0+CGFloat(i)*frame.width*0.1, 0, 0.06*frame.width, 0.06*frame.width*1.6377)
        self.addSubview(distances[i])

    }
}

required init?(coder aDecoder: NSCoder) {
    print("init coder called")

    fatalError("init(coder:) has not been implemented")
}

最佳答案

当心repeatedValue

使用 repeatedValue() 初始化的 Swift 数组中的每个元素的 都是相同的。

中间数组

var distances = [UIImageView]()
for i in 1...5 {
    let imageView = UIImageView(image: UIImage(named: "image\(i)"))
    distances.append(imageView)
}

for i in 0 ..< distances.count {
    distances[i].frame =
        CGRectMake(0+CGFloat(i)*frame.width*0.1, 0,
        0.06*frame.width, 0.06*frame.width*1.6377)
    self.addSubview(distances[i])
}

没有中间数组

您可能不需要首先将 UIImageView 缓存在单独的数组中。您甚至可以在 addSubview 阶段之后使用 .subviews 进行迭代。

for i in 0...4 {
    let imageView = UIImageView(image: UIImage( named: "image\(1+i)"))
    imageView.frame =
        CGRectMake(0+CGFloat(i)*frame.width*0.1, 0,
        0.06*frame.width, 0.06*frame.width*1.6377)
    self.addSubview(imageView)
}

您正在用相同值的 n 次初始化您的数组。您正在创建一个重复的 UIImageView

let distances = [UIImageView](count: 5, repeatedValue: UIImageView())

关于ios - 使用 UIImageView repeatedValue() 初始化 Swift 数组似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35511253/

相关文章:

java - 将数据文件中的整数存储到数组 Java 中

javascript - 如何使用数组创建新对象而不立即调用它们?

ios - UITableView Cell ImageView问题

IOS : UITableView is showing data when i tap on it

ios - 如何暂停uiview动画?

ios - 代码 : Apple Mach-O linker Error

javascript - 如何通过过滤嵌套属性返回父对象

ios - 多次调用 removeFromSuperView 会导致崩溃/错误吗?

ios - 如何使 subview 剪辑到 UIView 的边界

ios - 在 touchesMoved 期间取消触摸事件