2015-10-20 26 views
1

我有一個集合視圖,並已安排它的方式,在屏幕的一側有一列,並根據哪個集合項目處於焦點取代內容。對焦動作的時間延遲

我希望能夠交換內容,如果重點放在一個項目已超過0.5秒。

這是我現在擁有的,它立即交換數據。

if self.focused { 
    self.label.alpha = 1 
    self.priceLabel.alpha = 1 
    if self.representedDataItem?.imageUrl! == "https://s3-us-west-2.amazonaws.com/random/image.png" || 
     self.representedDataItem?.imageUrl! == "" { 
      self.backgroundImage.image = UIImage(named: "titleImage") 
    } 
    else { 
     ImageCache.sharedLoader.imageForUrl((self.representedDataItem?.imageUrl!)!, completionHandler:{(image: UIImage?, url: String) in 
      self.backgroundImage.image = image! 
     }) 
    } 
} 
else { 
    self.label.alpha = 0.2 
    self.priceLabel.alpha = 0.2 
} 

回答

0

不知道self.focused如何判斷,假設你已經照顧過它。因此,您可以使用GCD在關注時延遲執行。

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(0.5 * Double(NSEC_PER_SEC))), dispatch_get_main_queue()) { 
    // code to be executed after 0.5 sec 
} 
+0

通過圍繞包裝這個 「如果self.representedDataItem?.imageUrl!」聲明所有這一切只是推遲了即時發生的情況。因爲我只想限制圖像交換,而不是alpha變化,所以我將圖像代碼從原始「if self.focused」中拉出並放入代碼中,並使用新的「if self.focused」包裝它。我將在下面發佈我的最終代碼。 – mediarts

0
if self.focused { 
    self.label.alpha = 1 
    self.priceLabel.alpha = 1 
} 
else { 
    self.label.alpha = 0.2 
    self.priceLabel.alpha = 0.2 
} 
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(0.5 * Double(NSEC_PER_SEC))), dispatch_get_main_queue()) { 
    // code to be executed after 0.5 sec 
    if self.focused { 
     if self.representedDataItem?.imageUrl! == "https://s3-us-west-2.amazonaws.com/random/image.png" || 
      self.representedDataItem?.imageUrl! == "" { 
       self.backgroundImage.image = UIImage(named: "titleImage") 
     } 
     else { 
      ImageCache.sharedLoader.imageForUrl((self.representedDataItem?.imageUrl!)!, completionHandler:{(image: UIImage?, url: String) in 
       self.backgroundImage.image = image! 
      }) 
     } 
    } 
}