2015-04-24 26 views
0

目的如何顯示對象的更多副本?

我需要我的應用程序,以顯示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

由於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) 
} 
+0

非常感謝你回答我的問題!如何複製'UIImageView'?你介意鏈接一些可以幫助我做到的方法嗎?謝謝! – Cesare

+0

@CeceXX:剛編輯我的答案 – tbaranes

+0

它神奇地工作。非常感謝你! – Cesare