请考虑以下代码:
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)
您使用的是自动布局吗?如果你是,它可以解释为什么你没有看到你的所有按钮。另一种可能是您的应用程序包中不包含某些图像(这可能导致框架花费时间尝试在其他地方找到它们)或者非常大。
答案 1 :(得分:0)
原因是延迟的原因是因为线程。当我将代码包含在
中时dispatch_async(dispatch_get_main_queue()){
}
按钮立即出现。