কোডটি সর্বশেষতম সুইফ্ট ৩.০ এ রূপান্তর করার পরে আমি এই ত্রুটিটি দেখিয়েছি।
এর জন্য আমাকে সমাধানও বলুন CGSize = CGSizeMake(0,0)
static var frameAtStartOfPan: CGRect = CGRectZero
static var startPointOfPan: CGPoint = CGPointZero
যা অনুপলব্ধও।
কোডটি সর্বশেষতম সুইফ্ট ৩.০ এ রূপান্তর করার পরে আমি এই ত্রুটিটি দেখিয়েছি।
এর জন্য আমাকে সমাধানও বলুন CGSize = CGSizeMake(0,0)
static var frameAtStartOfPan: CGRect = CGRectZero
static var startPointOfPan: CGPoint = CGPointZero
যা অনুপলব্ধও।
উত্তর:
CGRect
নীচে দেওয়া কোনও CGPoint
বা একটি উদাহরণ ব্যবহার করে কেবল তৈরি করা যেতে পারে CGSize
।
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))
বা যদি আমরা প্রতিটি মান নির্দিষ্ট করতে চাই CGFloat
বা Double
বা Int
, আমরা এই পদ্ধতিটি ব্যবহার করতে পারি।
let rect = CGRect(x: 0, y: 0, width: 100, height: 100) // CGFloat, Double, Int
CGPoint
এভাবে তৈরি করা যায়।
let point = CGPoint(x: 0,y :0) // CGFloat, Double, Int
CGSize
এভাবে তৈরি করা যায়।
let size = CGSize(width: 100, height: 100) // CGFloat, Double, Int
মান হিসাবে 0 সহ আকার এবং বিন্দুও এটি করা যেতে পারে।
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
& CGPointZero
দিয়ে প্রতিস্থাপিত CGRect.zero
& CGPoint.zero
মধ্যে Swift 3.0
।
সুইফট 3 এবং আইওএস 10 - তে সিজিআরেক্টমেক, সিজিপিউনটেকমেক, সিজি সাইজমেকের জন্য দ্রুত সমাধান
এই এক্সটেনশনগুলি যুক্ত করুন:
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)
}
}
তারপর "যেতে খুঁজুন এবং কর্মস্থান প্রতিস্থাপন " খুঁজুন CGRectMake, CGPointMake, CGSizeMake এবং তাদের সঙ্গে প্রতিস্থাপন CGRect, CGPoint, CGSize
এই পদক্ষেপগুলি এখনই Xcode হিসাবে সমস্ত সময় সাশ্রয় করতে পারে আমাদের সুইফট 2+ থেকে সুইফট 3 এ দ্রুত রূপান্তর দেয় না
আপনি যদি এগুলিকে সুইফ্ট 2-তে ব্যবহার করতে চান তবে আপনি এই ফানকগুলি ব্যবহার করতে পারেন:
সিজিআরেক্টমেকের জন্য:
func CGRectMake(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) -> CGRect {
return CGRect(x: x, y: y, width: width, height: height)
}
সিজিপিউইন্টমেকের জন্য:
func CGPointMake(_ x: CGFloat, _ y: CGFloat) -> CGPoint {
return CGPoint(x: x, y: y)
}
সিজি সাইজমেকের জন্য:
func CGSizeMake(_ width: CGFloat, _ height: CGFloat) -> CGSize {
return CGSize(width: width, height: height)
}
এগুলি যে কোনও শ্রেণীর বাইরে রাখুন এবং এটি কাজ করা উচিত। (আমার পক্ষে কমপক্ষে কাজ করে)
মূল গ্রাফিক্স এবং অন্যান্য এপিআই-তে কাঠামোগুলি এবং অন্যান্য সমস্ত চিহ্নগুলি ক্লিনার হয়ে গেছে এবং এতে প্যারামিটারের নামও অন্তর্ভুক্ত রয়েছে। 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)
সিজিপয়েন্টের উদাহরণ:
let newPoint = stackMid.convert(CGPoint(x: -10, y: 10), to: self)
সিজিভেক্টর উদাহরণ:
self.physicsWorld.gravity = CGVector(dx: 0, dy: gravity)
সিজি সাইজের উদাহরণ:
hero.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: 16, height: 18))
সিজিআরেক্ট উদাহরণ:
let back = SKShapeNode(rect: CGRect(x: 0-120, y: 1024-200-30, width: 240, height: 140), cornerRadius: 20)
অ্যাপল ব্লগ
সুইফট 3-এ পরিবর্তিত সিন্ট্যাক্স এবং এপিআই এর পরিবর্তিত পরিবর্তনগুলি ভাষাটিকে আরও প্রাকৃতিক বোধ করে এবং কোকো ফ্রেমওয়ার্কগুলিতে কল করার সময় আরও বেশি সুইফট-ওয়াই অভিজ্ঞতা সরবরাহ করে। জনপ্রিয় ফ্রেমওয়ার্কগুলি কোর গ্রাফিক্স এবং গ্র্যান্ড সেন্ট্রাল ডিসপ্যাচের সুইফটে নতুন, অনেকগুলি ক্লিনার ইন্টারফেস রয়েছে।
সুইফট 3 বোনাস: কেন কেউ সংক্ষিপ্ত ফর্মটির উল্লেখ করেনি?
CGRect(origin: .zero, size: size)
.zero
পরিবর্তে CGPoint.zero
প্রকারটি সংজ্ঞায়িত হয়ে গেলে আপনি এটিকে নিরাপদে বাদ দিতে পারেন।
আপনি এটি সিজিআরেক্টজিরোর প্রতিস্থাপনের সাথে ব্যবহার করতে পারেন
CGRect.zero