पर परिवर्तन मैं इस विचार है कि 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] सेट करने की कोशिश की।
क्या आपने कभी इस समस्या को हल किया है? – AnthonyM