Вы можете написать его тремя одинаковыми способами:
напишите, что делать прямо в блоке замыкания/кода:
UIView.animateWithDuration(10.0) {
self.navigationController.toolbar.frame = CGRect(x:0.0, y:10.0, width:10.0, height:0.0)
}
Это также известно как замыкание в конце (Вы можете выполнять замыкание в конце, только если параметр закрытия является последним параметром).
Это не означает, что параметр «анимации» больше не записывается. Это написано, но так же, как в формате выше.
Пишите точно внутри строк, большинство разработчиков избегают этого, потому что писать со всеми скобками и фигурными скобками немного неудобно.
UIView.animateWithDuration(10.0, animations: {
self.navigationController.toolbar.frame = CGRect(x:0.0, y:10.0, width:10.0, height:0.0)
})
(В отличие от завершающего замыкания, вы написали имя, т.е. «анимация»). Это известно как встроенное замыкание.
Пишите в более модульном смысле
UIView.animateWithDuration(duration: NSTimeInterval, animations: animatingFunc)
func animatingFunc() {
self.navigationController.toolbar.frame = CGRect(x:0.0, y:10.0, width:10.0, height:0.0)
}
Помните, что тип параметра «анимации» был () -> Void
Точно так же, как и мы, animatingFunc не принимает никаких параметров, т.е. '()', и ничего не возвращает, т.е. 'void'.
(В Swift функции являются типами и могут быть переданы в качестве параметров). Кто-то может сказать, что это более читабельно, кто-то может сказать, что завершающее закрытие...
Примечание1 Вы также можете ничего не делать (что на самом деле не имеет смысла, но во многих других обработчиках/анимациях/дополнении вы можете ничего не делать)
UIView.animateWithDuration(duration: NSTimeInterval, animations: nil)
Примечание2
Замыкания становятся более интересными, когда вам нужно захватить значение. См. эту простую демонстрацию. Дополнительные сведения о замыканиях Swift см. в документации Apple
person
Honey
schedule
01.12.2016