2013-03-20 13 views
10

पर परिवर्तन मैं इस विचार है कि autoresizingMask = UIViewAutoresizingFlexibleHeightप्रतिबन्ध आधारित लेआउट एनिमेटेड नहीं जब स्थिति पट्टी ऊंचाई आईओएस

के लिए जब स्थिति पट्टी उसकी ऊंचाई (जब एक फोन कॉल को फांसी की तरह) चेतन होगा इस्तेमाल किया, दृश्य की ऊंचाई है एनिमेट और वृद्धि होगी।

लेकिन ऑटो लेआउट के साथ मैं की कमी के साथ इस autoresizingMask जगह हूँ:

UIView *orangeView = [[UIView alloc] initWithFrame:CGRectZero]; 
orangeView.translatesAutoresizingMaskIntoConstraints = NO; 
orangeView.backgroundColor = [UIColor orangeColor]; 

[self.view addSubview:orangeView]; 

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[orangeView]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(orangeView)]]; 
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-(40)-[orangeView]-(190)-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(orangeView)]]; 

लेकिन अब, मेरी लेआउट में परिवर्तन स्थिति पट्टी के साथ एनिमेटेड नहीं है, यह सिर्फ किसी भी एनिमेशन के बिना बदल गया है।

अब मुझे पता है कि मुझे कॉल-प्लेआउट करना चाहिए अगर बाधाओं-आधारित लेआउट का उपयोग करते समय एनीमेशन ब्लॉक में लिखा गया है। लेकिन यहां मैं एनीमेशन ब्लॉक बनाने वाला नहीं हूं! तो क्या बदलाव को एनिमेट करने का कोई तरीका है?

क्या इसका मतलब है कि मुझे अपने कोड में एक जगह मिलनी है जिसे इस एनीमेशन ब्लॉक के दौरान निष्पादित किया जाएगा जिसे मैंने शुरू नहीं किया था? मैंने UIApplicationWillChangeStatusBarFrameNotification को निकाल दिया है, लेकिन यह काम नहीं करता है, जब मैं अपने नियंत्रक में [self.view लेआउट IfNeeded] सेट करने की कोशिश की।

+0

क्या आपने कभी इस समस्या को हल किया है? – AnthonyM

उत्तर

2

सुनिश्चित करें कि आप updateConstraints विधि में अपनी बाधाएं जोड़ें।

यहाँ docs क्या कहना है:

कस्टम दृश्य है कि बाधाओं खुद को इस विधि अधिभावी द्वारा ऐसा करना चाहिए की स्थापना की। जब आपका कस्टम व्यू नोट करता है कि उस दृश्य में परिवर्तन किया गया है जो इसकी बाधाओं को अमान्य करता है, तो उसे तुरंत उस बाधा को हटा देना चाहिए, और उसके बाद setNeedsUpdateConstraints को कॉल करना चाहिए ताकि यह ध्यान में रखा जा सके कि बाधाओं को अद्यतन करने की आवश्यकता है।

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