如何显示对象的更多副本?

时间:2015-04-24 21:05:29

标签: ios swift

目标

我需要我的应用来显示UIImageView的多个实例。换句话说,应用应该使用UIImageView并在视图中显示更多次。新的UIImageViews保持相同,只有它们在视图中的位置会发生变化。

代码

为此,我首先声明UIImageView

    let myImage = UIImage(named: "house")
    let myImageView = UIImageView(image: myImage)

    myImageView.frame = CGRectMake(view.frame.size.width/2, view.frame.size.height/2, 100, 100)

然后我使用for-loop重复图像重复。

    for (var i = 0; i != 10; i++) {
        // Distribuite UIIMageViews here

        self.view.addSubview(myImageView)
    }

尽管如此,我似乎无法复制UIImageView并显示更多次。声明多个UIImageView听起来对我来说是一个低效的解决方案。

问题

有没有办法通过声明一次对象(UIImageView)多次显示它?

1 个答案:

答案 0 :(得分:1)

由于UIImageView不符合NSCopying协议,您必须自行复制:实例化新的UIImageView并手动复制您认为重要的每个属性原来的新的。

以下示例基于原始图像创建10个新图像。他们只是复制UIImage,但你可以完成它并复制你需要的属性:

let myImage = UIImage(named: "house")
let myImageView = UIImageView(image: myImage)
myImageView.frame = CGRectMake(view.frame.size.width/2, view.frame.size.height/2, 100, 100)
self.view.addSubview(myImageView)
for (var i = 0; i != 10; i++) {
    var newImageView = UIImageView(image: myImageView.image)
    newImageView.frame = // yourNewFrame
    // Copy any else properties you need from the original image
    self.view.addSubview(newImageView)
}