সিজিআরেক্টমেক, সিজিপিউইটম্যান মেক, সিজি সাইজমেক, সিজিআরেক্টজিরো, সিজিপয়েন্ট জিরো সুইফটে অনুপলব্ধ


242

কোডটি সর্বশেষতম সুইফ্ট ৩.০ এ রূপান্তর করার পরে আমি এই ত্রুটিটি দেখিয়েছি।

এখানে চিত্র বর্ণনা লিখুনএখানে চিত্র বর্ণনা লিখুন

এর জন্য আমাকে সমাধানও বলুন CGSize = CGSizeMake(0,0)

static var frameAtStartOfPan: CGRect = CGRectZero
static var startPointOfPan: CGPoint = CGPointZero

যা অনুপলব্ধও।


তবে আমার আগের কোডটি সুইফট 3 এ রূপান্তর করার পরে আমি এই সমস্যাটি পেয়েছি, আপডেট সংস্করণে সিনট্যাক্সে কোনও পরিবর্তন আছে কিনা তা জানতে চাই
niravdesai21

উত্তর:


493

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


আপনি কি আমাকে সিজি সাইজ = সিজি সাইজমেক (0,0) এর সমাধানও বলতে পারেন যা দ্রুত 3
নীরবদেসই

@ niravdesai21 প্রশ্ন আপডেট করেছেন, দয়া করে চেক করুন।

সিজিপিয়েন্ট জিরো এবং সিজিআরেক্টজেরোও কি এর কোনও সমাধান পাওয়া যায় না? আপডেট প্রশ্ন দয়া করে উত্তর আপডেট করুন
niravdesai21

@ niravdesai21 আপডেট হয়েছে।

4
"সিজিআরেক্টজেরো সুইফটে অনুপলব্ধ" যখন আসলে এটি সিজিআরেক্ট.এজারোতে একটি সিনট্যাক্স পরিবর্তন হয় তামাশা! এই ছেলেরা তাদের সংকলন সতর্কবাণীগুলি বড় সময়ে কাজ করা দরকার ... তাদের ক্রমাগত জামিন দিতে তারা স্ট্যাক ওভারফ্লোতে নির্ভর করে
মাগু

49

সুইফট 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 এ দ্রুত রূপান্তর দেয় না


উজ্জ্বল সমাধান!
Oprimus

@ অপ্রিমাস আশা করছেন এটি আপনার ঝামেলা কমিয়ে দিয়েছে :)
রাফাত তৌকির রাফসুন

26

সুইফট 3, আপনি কেবল ব্যবহার করতে পারেন CGPoint.zeroবা CGRect.zeroস্থানে CGRectZeroবা CGPointZero

তবে সুইফট 4-এ, CGRect.zeroএবং 'CGPoint.zero'কাজ করবে


1
@ চাবি দ্য চর্কি আপনি ঠিক "একমাত্র" শব্দের বিভ্রান্তি সৃষ্টি করেছেন আমি তা মুছে ফেলেছি।
গুরু

12

আপনি যদি এগুলিকে সুইফ্ট 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)
}

এগুলি যে কোনও শ্রেণীর বাইরে রাখুন এবং এটি কাজ করা উচিত। (আমার পক্ষে কমপক্ষে কাজ করে)


9

মূল গ্রাফিক্স এবং অন্যান্য এপিআই-তে কাঠামোগুলি এবং অন্যান্য সমস্ত চিহ্নগুলি ক্লিনার হয়ে গেছে এবং এতে প্যারামিটারের নামও অন্তর্ভুক্ত রয়েছে। 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-এ পরিবর্তিত সিন্ট্যাক্স এবং এপিআই এর পরিবর্তিত পরিবর্তনগুলি ভাষাটিকে আরও প্রাকৃতিক বোধ করে এবং কোকো ফ্রেমওয়ার্কগুলিতে কল করার সময় আরও বেশি সুইফট-ওয়াই অভিজ্ঞতা সরবরাহ করে। জনপ্রিয় ফ্রেমওয়ার্কগুলি কোর গ্রাফিক্স এবং গ্র্যান্ড সেন্ট্রাল ডিসপ্যাচের সুইফটে নতুন, অনেকগুলি ক্লিনার ইন্টারফেস রয়েছে।


5

নিম্নলিখিত চেষ্টা করুন:

var myToolBar = UIToolbar.init(frame: CGRect.init(x: 0, y: 0, width: 320, height: 44))

এটি সুইফটের সর্বশেষ সংস্করণে


এটি (Y) এর মতো, এটি স্বয়ংক্রিয় সমাপ্তির পক্ষে সহজ হবে
হুসাম

5

সুইফট 3 বোনাস: কেন কেউ সংক্ষিপ্ত ফর্মটির উল্লেখ করেনি?

CGRect(origin: .zero, size: size)

.zero পরিবর্তে CGPoint.zero

প্রকারটি সংজ্ঞায়িত হয়ে গেলে আপনি এটিকে নিরাপদে বাদ দিতে পারেন।


2

আপনি এটি সিজিআরেক্টজিরোর প্রতিস্থাপনের সাথে ব্যবহার করতে পারেন

CGRect.zero

0

সুইফট 4 এ এটি নীচের মতো কাজ করে

collectionView.setContentOffset(CGPoint.zero, animated: true)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.