我正在尋找iPhone上的一系列圖像的動畫。圖像以連續順序命名(image1,image2,image3等)。我正在尋找最佳的方式來動畫這些圖像,而不必將它們放入數組中。從uiimageview.animationimages中移除圖像 - iPhone/Swift
我有多組圖像將隨機選擇。每個圖像集都是〜100幀,所以當應用程序啓動時將所有這些放在數組中,意味着有大約1000張圖像坐在內存中。
除了使用如此多的內存之外,不斷更新UIImage.animationImages可能需要比我想要的更長的時間來處理此大小的數組。我想我要的是類似於手錶套裝了,它可以讓你「setImageNamed(),然後startAnimatingWithImagesInRange東西()
編輯:
很抱歉,如果我最初的職位是我試圖避免爲此發佈代碼,因爲我已經用Xcode以10種不同的方式嘗試了這些代碼,但其中的任何一個都不能正常工作,我已經在下面發佈了我的代碼,而我的問題這是因爲每當我嘗試清除它們時,內存都會繼續充滿每次我設置的動畫和數組時,內存會繼續充滿。對於它的價值,我真的很新,所以我希望我錯過了一些非常明顯的東西,但我確實在我到這裏或其他任何地方之前試着自己想出來,這是唯一的解決辦法阿爾恩。
@IBOutlet weak var imageViewOutlet: UIImageView!
var phaseArray: [UIImage] = []
var optionArray: [UIImage] = []
var outroArray: [UIImage] = []
var randomOption32: UInt32 = 1
var randomOption = 1
var buttonPressed = false
@IBAction func testButton(sender: AnyObject) {
if buttonPressed == false {
fillPhaseArray()
fillOptionArray()
fillOutroArray()
imageViewOutlet.animationImages = phaseArray + optionArray + outroArray
imageViewOutlet.animationRepeatCount = 1
imageViewOutlet.startAnimating()
buttonPressed == true
} else {
clearArrays()
fillOptionArray()
fillOutroArray()
imageViewOutlet.animationImages = phaseArray + optionArray + outroArray
imageViewOutlet.animationRepeatCount = 1
imageViewOutlet.startAnimating()
}
}
func fillPhaseArray() {
for var i = 1; i <= 65; i++ {
phaseArray.append(UIImage(named: "phase1_\(i)")!)
}
}
func fillOptionArray() {
randomOption32 = arc4random_uniform(UInt32(15))
randomOption = Int(randomOption32)
for var i = 1; i <= 14; i++ {
optionArray.append(UIImage(named: "option_\(randomOption)\(i)")!)
}
}
func fillOutroArray() {
for var i = 1; i <= 11; i++ {
outroArray.append(UIImage(named: "outro_\(randomOption)\(i)")!)
}
}
func clearArrays() {
optionArray.removeAll(keepCapacity: true)
optionArray = []
outroArray.removeAll(keepCapacity: true)
outroArray = []
imageViewOutlet.animationImages?.removeAll(keepCapacity: false)
imageViewOutlet.animationImages = []
}
這幾乎是我的整個viewController.swift。
編輯:
所以,事實證明,我的真正的問題不是該數組但iOS的使用命名的圖像時,緩存圖像的方式。我已經轉向使用imagewithcontentsoffile,這似乎適用於大多數人,它確實有幫助,但並沒有完全解決我的問題。我一次添加大約100張圖像的數組,以便uiimageview.animation圖像。這部動畫將會播放並與另外100張圖像快速交換出來,但我無法清除動畫圖像,因此無論我多麼努力地清除動畫圖像,每次添加一個新數組時,它都會附加到舊數組上。
感謝您的幫助。我將試驗你的代碼,並試圖更好地理解它是如何工作的,看看它如何幫助我。我也很欣賞關於我的帖子的提示。我想包括我最初的代碼,但是在試圖通過大約10-15次不同的嘗試來解決這個問題後,它變成了一場噩夢。我甚至不知道哪一個最接近那個點。希望我最近對我的帖子進行的編輯會有所幫助。 – kShmoove 2015-04-06 23:54:54
我無法獲得上面的代碼來完成我的目標。我想讓圖像停留在屏幕中間,並一次更新一幀。此代碼移動了我的圖像。即使消除x值的變化,它也不會在適當的位置生成動畫,它只是發生得太快而立即顯示動畫中的最後一個圖像。我與NSTimer混爲一談,但我對運行這樣的動畫的計時器並沒有太大的運氣,我覺得有一種更好的方法來做這樣的簡單動畫。有了這個說法,我感謝你的建議,它教會了我一些新的東西。 – kShmoove 2015-04-07 03:08:06