HTTP POST 请求 UIView 更改延迟后
After HTTP POST request UIView change delays
我已使用此代码发出 HTTP POST 请求:
let myURL = NSURL(string: serverURL)
let request = NSMutableURLRequest(URL: myURL!)
request.HTTPMethod = "POST"
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
if error != nil {
print(error)
} else {
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
print(responseString)
self.view.backgroundColor = UIColor.redColor()
}
}
task.resume()
我的经验是视图的 backgroundColor
在 responseString 打印几秒后发生变化。
为什么会这样,我怎样才能同时做到?
谢谢。
始终在主线程上执行 UI
更改,因此请像这样在主线程上更改视图的 backgrondColor
。
dispatch_async(dispatch_get_main_queue(),{
self.view.backgroundColor = UIColor.redColor()
}
您需要对主线程执行 UI 更改以使其更快,因为我认为 http 请求是异步发出的,例如下载图像。所以在你的代码中你可以做如下
dispatch_async(dispatch_get_main_queue(),{
self.view.backgroundColor = UIColor.redColor()
}
我已使用此代码发出 HTTP POST 请求:
let myURL = NSURL(string: serverURL)
let request = NSMutableURLRequest(URL: myURL!)
request.HTTPMethod = "POST"
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
if error != nil {
print(error)
} else {
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
print(responseString)
self.view.backgroundColor = UIColor.redColor()
}
}
task.resume()
我的经验是视图的 backgroundColor
在 responseString 打印几秒后发生变化。
为什么会这样,我怎样才能同时做到?
谢谢。
始终在主线程上执行 UI
更改,因此请像这样在主线程上更改视图的 backgrondColor
。
dispatch_async(dispatch_get_main_queue(),{
self.view.backgroundColor = UIColor.redColor()
}
您需要对主线程执行 UI 更改以使其更快,因为我认为 http 请求是异步发出的,例如下载图像。所以在你的代码中你可以做如下
dispatch_async(dispatch_get_main_queue(),{
self.view.backgroundColor = UIColor.redColor()
}