У меня есть globalstate в моем приложении. В зависимости от состояния графический интерфейс отличается.Swift: dispatch_async эффект несовместим для анимации
Когда я с самого начала View для просмотра B У меня есть globalstate Он должен показать информационный экран, но это не так. НО: Когда View B загрузится только один раз, и я перехожу из View C/D/E обратно в View B, тогда код работает отлично. (Вы должны быть в поле зрения А, чтобы получить в View B.)
Я использую много dispatch_async (dispatch_get_main_queue .. это не хороший стиль, это?
Почему моя анимация не загружается на ? начало Что такое хороший стиль Спасибо за ответы и извините за ошибки (английский не мой Родной)
override func viewDidLoad() {
super.viewDidLoad()
dispatch_async(dispatch_get_main_queue(), {
self.animateTheInformationViewWhenGlobalStateIsThree()
})
}
func animateTheInformationViewWhenGlobalStateIsThree() {
print("GLOGBALSTATE \(globalState)") //it is 3
if globalState == 3 {
setGlobalState(3)
dispatch_async(dispatch_get_main_queue(), {
GUITools.animateTheInformationView(self.tableView, animateBottomLayout: self.animationBottomConstraint, value: self.negativValue)
})
print("THE POSITIV VALUE THE NEGATIV")
}
// GUITools-Static-Class:
class func animateTheInformationView(tableView: UITableView, animateBottomLayout: NSLayoutConstraint, value: CGFloat) {
dispatch_async(dispatch_get_main_queue(), {
animateBottomLayout.constant += value
UIView.animateWithDuration(Constants.animationTime, animations: {() -> Void in
tableView.layoutIfNeeded()
},completion: {
(value: Bool) in
})
})
}
EDIT С viewDidAppear
он работает. Но анимация - не настоящая анимация. ТаблицаView «перескакивает». Таким образом, нет скольжения/анимации.
Я удалил все dispatch_async ..
override func viewDidAppear(animated: Bool) { self.animateTheInformationViewWhenGlobalStateIsSeven() }
человек, большое спасибо! И спасибо за объяснение. – kuzdu