2016-03-11 119 views
0

請考慮下面的代碼:iOS版雨燕按鈕顯示延遲

override func viewDidLoad() { 
    super.viewDidLoad() 

    let images = [ 
     "Add To Inventory","Move To Display Room","Move To Store Room","Move To Storage","Scrap Inventory" 
    ] 

    var buttons:[UIButton] = [] 
    // For use in foreground 
    let name=defaults.valueForKey("name") as! String 
    tasksTitle.title = "Tasks for \(name)" 
    var y=CGFloat(140) 

    for var i=0;i<images.count;i++ { 
     print(i) 
     buttons.append(UIButton(type: .Custom)) 
     buttons[i].frame = CGRectMake(60,y,650,100) 

     buttons[i].setImage(UIImage(named: "\(images[i]).png"), forState: .Normal) 
     buttons[i].tag = i 
     buttons[i].addTarget(self, action: "taskPressed:", forControlEvents: UIControlEvents.TouchUpInside) 
     self.view.addSubview(buttons[i]) 
     y+=130 
     print(y) 
    } 

我的問題是,它需要大約20秒的按鈕出現,當他們這樣做只是第一(添加到庫存)和最後(廢料庫存)實際上出現。我已經嘗試重新創建視圖並使用普通按鈕獲得相同的結果。有沒有人有任何想法,因爲我的問題可能是什麼?

回答

0

您使用自動佈局嗎?如果你是,它可以解釋爲什麼你沒有看到你所有的按鈕。另一種可能性是某些圖像不包含在你的應用程序包中(這可能會導致框架花時間在其他地方找到它們)或者非常大。

+0

圖像在包中,但很大(650x100)。我沒有考慮過。我會盡量縮小它們的尺寸,看看會發生什麼。 –

0

原因是延遲是由於線程引起的。當我附上我的代碼

dispatch_async(dispatch_get_main_queue()){ 
} 

按鈕立即出現。