2016-09-11 11 views
6

स्विफ्ट 2.3 में, हम कुछ इस तरह लिख सकते हैं:स्विफ्ट 3 परिवर्तनशील लापता कार्य ('... Inplace' विधि)

var rect = CGRect(...) 
rect.offsetInPlace(dx: 15, dy: 0) 

सही करने के लिए एक रेक्ट 15pt स्थानांतरित करने के लिए।

हालांकि स्विफ्ट 3 में, ऐसा लगता है कि यह फ़ंक्शन मौजूद नहीं है। CGRect इंटरफ़ेस का निरीक्षण करते समय हम केवल गैर उत्परिवर्तन संस्करण offsetBy(dx:, dy:) देख सकते हैं। यह उन सभी स्थानों पर भी सच है जिन्हें हमने आम तौर पर उत्परिवर्तन कार्यों का उपयोग किया है (नाम ...inPlace)। मैंने पहले ही गिटहब पर स्विफ्ट इवोल्यूशन रेपो की खोज की है, लेकिन इसके बारे में कोई नोट नहीं मिला।

क्या उत्परिवर्तन भिन्नताएं हटा दी गई हैं? क्या शेष कार्य स्वचालित रूप से उत्परिवर्तित है कि रिटर्न मान का उपयोग किया जाता है या नहीं? आईएमएचओ, अगर उन्हें वास्तव में हटा दिया गया है, तो यह शर्म की बात होगी, क्योंकि वे कोड आधारित लेआउट आदि करते समय बहुत सुविधाजनक होते थे।

+0

यह तब तक आप के रूप में कर सकते हैं में पदावनत https://developer.apple.com/reference/coregraphics/cgrect/1455748-offsetinplace –

+0

के रूप में प्रदर्शित नहीं करता है का पालन करें 'विस्तार CGRect { समारोह offsetInPlace परिवर्तनशील (डीएक्स: सीजीएफएलएटी, डीई: सीजीएफएलएटी) { स्वयं = ऑफसेट बी (डीएक्स: डीएक्स, डीई: डीई) } } ' –

+0

हाँ मुझे पता है कि मैं आगे बढ़ सकता हूं और गायब चीजों के लिए एक्सटेंशन लिख सकता हूं। लेकिन मैं उन सभी के लिए ऐसा करने से बचाना चाहूंगा .. आमतौर पर ढांचे द्वारा प्रदान की जाने वाली जगहों के तरीके .. – Cabus

उत्तर

5

ऐसा लगता है कि अब offsetInPlace नहीं है। कृपया यहां स्क्रीन देखें Instance Methods enter image description here

+0

अच्छी तरह से ऐसा लगता है कि यह दुखद सत्य है ... – Cabus

+0

क्या उन्होंने इसे निरीक्षण के माध्यम से हटा दिया, या वहां उत्परिवर्तन कार्यों का एक भार है अब मौजूद नहीं हैं? (मैंने अभी अपना ऐप 3.0 में बदल दिया है और मैंने ऑफ़सेट इंप्लेस का बहुत उपयोग किया है) – solenoid

+0

@solenoid हाय ने इसके बारे में अधिक शोध किया है और यह फ़ंक्शन म्यूटेट करने के लिए लोड लगता है। कृपया इस लिंक की समीक्षा करें https://developer.apple.com/library/content/releasenotes/General/iOS91APIDiffs/Swift/CoreGraphics.html – Svitlana

13

आप सभी को संगतता के लिए बना सकते हैं।

extension CGRect { 
    mutating func offsetInPlace(dx: CGFloat, dy: CGFloat) { 
     self = self.offsetBy(dx: dx, dy: dy) 
    } 
}