【发布时间】:2016-05-21 05:15:45
【问题描述】:
我有一个名为 loadMainView() 的函数,它是从 viewDidLoad() 调用的,如下所示
func loadMainView() {
masterView = UIView(frame: CGRectMake(0,0,self.bgScrollView!.contentSize.width,self.bgScrollView!.contentSize.height))
masterView!.backgroundColor = UIColor.clearColor()
bgScrollView!.addSubview(masterView!)
backgroundImage = UIImageView(frame: self.masterView!.bounds)
backgroundImage!.image = UIImage(named: self.backgroundImageName!)
self.masterView!.addSubview(backgroundImage!)
Common.sharedCommon.postRequestAndHadleResponse(kAllowedPaths.kPathGetAllNotes, body: nil) { (result, response) -> Void in
if (result == true) {
let respData = response.objectForKey("data")
self.notesDataList = respData! as! Array<Dictionary<String, AnyObject>>
self.showExisting()
}
}
}
在 loadMainView() 函数中,我正在进行异步 HTTP 调用以获取数据源,一旦加载数据源,我将调用另一个名为 showExisting() 的函数,其主体如下
func showExistingNotes() {
let xPoint = 100
var yPoint = 100
let printNote = notesDataList[0]
let noteText = printNote["noteText"] as! String
let noteTextFont = printNote["noteTextFont"] as! String
let noteTextFontSize = printNote["noteTextFontSize"] as! CGFloat
let noteType = printNote["noteType"] as! String
let dim = 40.0
let note = WallNote(frame: CGRectMake(xPoint,yPoint,dim,dim), noteType:noteType, noteText: noteText, noteFont:noteTextFont, noteFontSize:noteTextFontSize, noteFontColor:kDefaultFontColor)
note.wallnoteDelegate = self
//print("subview added")
self.masterView!.addSubview(note)
}
如你所见,我在这个函数中所做的只是将一个名为“note”的子视图添加到“masterView”。代码工作正常,但子视图“note”在 10 或 15 秒延迟后显示在屏幕上。
我尝试添加一个打印语句 print("subview added") 以查看是否需要一些时间才能到达该语句,但是一旦数据源填充了 loadMainView() 函数并添加了 print 语句就会被调用print 语句后的子视图在 print 语句后 10 或 15 秒后显示。
我无法理解为什么在显示子视图时会出现这种延迟。
谢谢
【问题讨论】:
-
您的完成处理程序可能正在后台线程上被调用。您需要在主线程上进行任何 UI 更新。
标签: ios iphone swift uiview subview