6

समायोजित करने के बजाय NSLayoutConstraints को जोड़कर और निकालने से एनिमेटिंग मेरे पास एक NSButton है जिसका तल इसके पर्यवेक्षण के साथ फ्लश है, और मैं इसे ऊपर ले जाना चाहता हूं ताकि इसका शीर्ष इसके पर्यवेक्षण के साथ फ़्लश हो।कॉन्स्टेंट

डब्ल्यूडब्ल्यूडीसी 2012 सत्र 228: ऑटो लेआउट मास्टरिंग के लिए सर्वोत्तम अभ्यास लेआउट परिवर्तन (31:16) को एनिमेट करने के दो तरीके बताते हैं, और मैं CoreAnimation तकनीक का उपयोग करने का प्रयास कर रहा हूं। नीचे दिया गया उदाहरण एनएसबटन को सही ढंग से स्थानांतरित करता है, लेकिन यह तत्काल और बिना एनीमेशन के करता है।

[button.superview removeConstraint:pointerToBottomSpaceConstraint] ; 
NSArray* topSpaceConstraintArray = [NSLayoutConstraint constraintsWithVisualFormat: @"V:|[button]" 
                      options: 0 
                      metrics: nil 
                      views: NSDictionaryOfVariableBindings(button)] ; 
[button.superview addConstraints:topSpaceConstraintArray] ; 
[NSAnimationContext runAnimationGroup:^(NSAnimationContext* context) { 
    context.duration = 2 ; 
    context.allowsImplicitAnimation = YES ; 
    [button.superview layoutSubtreeIfNeeded] ; 
} completionHandler:nil] ; 

मैं जोड़ने & NSLayoutConstraints हटाने और CoreAnimation यह पता लगाने कैसे परिवर्तन चेतन करने के लिए करते हैं कर सकते हैं? यह बटन की पुरानी & नई स्थिति के बीच की दूरी निर्धारित करने के बाद, उस राशि से NSLayoutConstraint के कॉन्स्टेंट को समायोजित करने से मुझे लगता है।

उत्तर

7

button.superview.wantsLayer = YES जोड़ने के बाद, उपरोक्त उदाहरण सही ढंग से एनिमेट करता है।

संबंधित मुद्दे