Обновить 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 не делает это автоматически, когда я конвертирую код в Current Swift Syntax...
Ответы
Ответ 1
Apple действительно предоставляет эту функцию. Все, что вам нужно сделать, это перейти к:
Изменить > Преобразовать > в последний синтаксис Swift...
![введите описание изображения здесь]()
Затем следуйте инструкциям на экране.
Это решит ваши проблемы с синтаксисом, и вам не придется создавать новые функции для всех удаленных функций.
Ответ 2
Простейшим решением является, вероятно, просто переопределение функций, которые Apple отняла. Пример:
func CGRectMake(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) -> CGRect {
return CGRect(x: x, y: y, width: width, height: height)
}
Поместите это в свой модуль, и все вызовы CGRectMake
снова будут работать.
Ответ 3
Короткий ответ: не делайте этого. Не позволяйте 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" везде, и я закончил.