Kodu en son swift 3.0'a dönüştürdükten sonra bu hatayı gösterdim.
Ayrıca bana çözüm söyle CGSize = CGSizeMake(0,0)
static var frameAtStartOfPan: CGRect = CGRectZero
static var startPointOfPan: CGPoint = CGPointZero
Bu da mevcut değil.
Kodu en son swift 3.0'a dönüştürdükten sonra bu hatayı gösterdim.
Ayrıca bana çözüm söyle CGSize = CGSizeMake(0,0)
static var frameAtStartOfPan: CGRect = CGRectZero
static var startPointOfPan: CGPoint = CGPointZero
Bu da mevcut değil.
Yanıtlar:
CGRect
Aşağıda verilen bir CGPoint
veya CGSize
, örneği kullanılarak kolayca oluşturulabilir .
let rect = CGRect(origin: CGPoint(x: 0,y :0), size: CGSize(width: 100, height: 100))
// Or
let rect = CGRect(origin: .zero, size: CGSize(width: 100, height: 100))
Veya CGFloat
ya Double
da ya da içindeki her bir değeri belirtmek istiyorsak Int
, bu yöntemi kullanabiliriz.
let rect = CGRect(x: 0, y: 0, width: 100, height: 100) // CGFloat, Double, Int
CGPoint
Bu şekilde oluşturulabilir.
let point = CGPoint(x: 0,y :0) // CGFloat, Double, Int
CGSize
Bu şekilde oluşturulabilir.
let size = CGSize(width: 100, height: 100) // CGFloat, Double, Int
Ayrıca boyut olarak 0 ile nokta ve değerler, bu şekilde yapılabilir.
let size = CGSize.zero // width = 0, height = 0
let point = CGPoint.zero // x = 0, y = 0, equal to CGPointZero
let rect = CGRect.zero // equal to CGRectZero
CGRectZero
Ve CGPointZero
yerini CGRect.zero
ve CGPoint.zero
de Swift 3.0
.
İçin hızlı düzeltme CGRectMake, CGPointMake, CGSizeMake içinde swift3 & iOS10
Bu uzantıları ekleyin:
extension CGRect{
init(_ x:CGFloat,_ y:CGFloat,_ width:CGFloat,_ height:CGFloat) {
self.init(x:x,y:y,width:width,height:height)
}
}
extension CGSize{
init(_ width:CGFloat,_ height:CGFloat) {
self.init(width:width,height:height)
}
}
extension CGPoint{
init(_ x:CGFloat,_ y:CGFloat) {
self.init(x:x,y:y)
}
}
Daha sonra "gidin bulun ve Workspace Değiştir " Bul CGRectMake, CGPointMake, CGSizeMake ve onları değiştirin CGRect, CGPoint, CGSize
Xcode şu anda Swift 2+' den Swift 3'e hızlı bir dönüşüm sağlamadığımız için bu adımlar her zaman kaydedilebilir.
Bunları hızlı 2'de kullanmak istiyorsanız, bu işlevleri kullanabilirsiniz:
CGRectMake için:
func CGRectMake(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) -> CGRect {
return CGRect(x: x, y: y, width: width, height: height)
}
CGPointMake için:
func CGPointMake(_ x: CGFloat, _ y: CGFloat) -> CGPoint {
return CGPoint(x: x, y: y)
}
CGSizeMake için:
func CGSizeMake(_ width: CGFloat, _ height: CGFloat) -> CGSize {
return CGSize(width: width, height: height)
}
Sadece herhangi bir sınıfın dışına koyun ve işe yarayacak. (En azından benim için çalışıyor)
Çekirdek Grafikler ve diğer API'lardaki yapıların yanı sıra diğer tüm semboller daha temiz hale geldi ve ayrıca parametre adları içeriyor. https://developer.apple.com/reference/coregraphics#symbols
CGRect(x: Int, y: Int, width: Int, height: Int)
CGVector(dx: Int, dy: Int)
CGPoint(x: Double, y: Double)
CGSize(width: Int, height: Int)
CGPoint Örneği:
let newPoint = stackMid.convert(CGPoint(x: -10, y: 10), to: self)
CGVector Örneği:
self.physicsWorld.gravity = CGVector(dx: 0, dy: gravity)
CGSize Örneği:
hero.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: 16, height: 18))
CGRect Örneği:
let back = SKShapeNode(rect: CGRect(x: 0-120, y: 1024-200-30, width: 240, height: 140), cornerRadius: 20)
Apple Blogu
Swift 3'teki Swift sözdizimi ve API yeniden adlandırma değişiklikleri, dili daha doğal hissettirir ve Kakao çerçevelerini çağırırken daha da hızlı bir Swift-y deneyimi sağlar. Popüler çerçeveler Core Graphics ve Grand Central Dispatch, Swift'te yeni, çok daha temiz arayüzlere sahip.
Swift 3 Bonus: Neden kimse kısa formdan bahsetmedi?
CGRect(origin: .zero, size: size)
.zero
onun yerine CGPoint.zero
Tür tanımlandığında, güvenle atlayabilirsiniz.
Bunu CGRectZero'nun değiştirilmesi ile kullanabilirsiniz
CGRect.zero
CGSize için
CGSize(width: self.view.frame.width * 3, height: self.view.frame.size.height)