Обновление CGRectMake для CGRect в Swift 3 автоматически
Теперь, когда CGRectMake, CGPointMake, CGSizeMake и т. Д. Были удалены в Swift 3.0, есть ли способ автоматически обновить все инициализации, например, из CGRectMake(0,0,w,h) to CGRect(x:0,y:0,width:w,height:h)
, Ручной процесс это... довольно больно.
Не уверен, почему Apple не конвертирует это автоматически, когда я конвертирую код в текущий синтаксис Swift...
3 ответа
Apple на самом деле предоставляет эту функцию. Все, что вам нужно сделать, это перейти к:
Правка > Конвертировать > В последний синтаксис Swift...
А затем следуйте инструкциям на экране.
Это решит ваши проблемы с синтаксисом, и вам не придется создавать новые функции для всех удаленных функций.
Возможно, самое простое решение - просто переопределить функции, которые Apple забрала. Пример:
func CGRectMake(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) -> CGRect {
return CGRect(x: x, y: y, width: width, height: height)
}
Поместите это в свой модуль и все вызовы CGRectMake
будет работать снова.
Короткий ответ: не делай этого. Не позволяйте Apple руководить вами. Я ненавижу CGRect(x:y:width:height:)
, Я подал ошибку на нем. Я думаю, что инициализатор должен быть CGRect(_:_:_:_:)
, как CGRectMake
, Я определил расширение для CGRect, которое его поставляет, и добавлю это расширение в каждый отдельный проект, как только я начну.
extension CGRect {
init(_ x:CGFloat, _ y:CGFloat, _ w:CGFloat, _ h:CGFloat) {
self.init(x:x, y:y, width:w, height:h)
}
}
Таким образом, все, что мне нужно сделать, это изменить "CGRectMake" на "CGRect" везде, и все готово.