आदेश इस आशय आप स्क्रैच से अपने दृश्य को ढेर के पुनर्निर्माण के लिए होगा प्राप्त करने के लिए।
@implementation ViewController
@synthesize container;
- (void)viewDidLoad {
[super viewDidLoad];
container = [[UIView alloc] initWithFrame:self.view.frame];
[self.view addSubview:container];
// add all views later to this insted of self.view
// continue viewDidLoad setup
}
अब अगर आपको लगता है कि है, तो आप चेतन कर सकते हैं:
तो वहाँ के रूप में viewController.view
के फ्रेम को बदलने के लिए कोई संभावना नहीं है, आप कंटेनर का एक प्रकार एक छोटे से इस तरह subview जोड़ना होगा इसलिए जैसे सिकुड़ व्यवहार:
[UIView animateWithDuration:.5 animations:^{
container.frame = CGRectMake(10, 17, self.view.frame.size.width-20, self.view.frame.size.height-34);
}];
ठीक है, मुझे लगता है आप आईओएस 7 के लिए विकसित कर रहे हैं, इसलिए हम यहां कुछ नए API का उपयोग कर देंगे (पुराने संस्करणों के लिए वहां वैकल्पिक व्यवस्थाएं कर रहे हैं)। अब चूंकि डब्ल्यूडब्ल्यूडीसी UIView
को resizableSnapshotViewFromRect:(CGRect) afterScreenUpdates:(BOOL) withCapInsets:(UIEdgeInsets)
विधि मिली है जो एक UIView
ऑब्जेक्ट को वापस कर रही है।
[UIView animateWithDuration:.5 animations:^{
container.frame = CGRectMake(10, 17, self.view.frame.size.width-20, self.view.frame.size.height-34);
} completion:^(BOOL finished) {
UIView *viewToBlur = [self.view resizableSnapshotViewFromRect:container.frame afterScreenUpdates:YES withCapInsets:UIEdgeInsetsZero];
}];
आप अपना दृश्य प्रबंधन के पुनर्लेखन के लिए नहीं करना चाहते हैं, तो आप भी पहली बार अपने मुख्य दृश्य का एक स्नैपशॉट इस तरह से ले सकते हैं, कंटेनर के लिए सेट और उसके बाद ही छवि चेतन। लेकिन याद रखें, आप तब कब्जे वाले दृश्य से बातचीत नहीं कर सकते हैं।
जब आपको यह मिल गया, तो आप this रेपो से दो श्रेणी फ़ाइलों को डाउनलोड कर सकते हैं (वे डब्ल्यूडब्ल्यूडीसी से हैं, इसलिए सीधे ऐप्पल से!)। असल में, वे क्या करते हैं, वे UIView
कक्षा में कुछ शानदार नई विधियां जोड़ते हैं, जिनमें से हम applyDarkEffect
का उपयोग करेंगे। मैंने इसका परीक्षण नहीं किया है, शायद एक और तरीका आपकी आवश्यकताओं को बेहतर तरीके से फिट करता है।
फिर भी अगर हम ब्लॉक में है कि लागू करने और शायद यह भी धुंधला ओवरले प्रदर्शित करने के लिए एक UIImageView
जोड़ने के लिए, यह कुछ इस तरह दिखना चाहिए:
[UIView animateWithDuration:.5 animations:^{
container.frame = CGRectMake(10, 17, self.view.frame.size.width-20, self.view.frame.size.height-34);
} completion:^(BOOL finished) {
UIView *viewToBlur = [self.view resizableSnapshotViewFromRect:container.frame afterScreenUpdates:YES withCapInsets:UIEdgeInsetsZero];
UIImage *image = [viewToBlur applyDarkEffect];
UIImageView *blurredView = [[UIImageView alloc] initWithFrame:self.view.frame];
[self.view addSubview:blurredView];
// optionally also animate this, to achieve an even smoother effect
[blurredView setImage:image];
}];
फिर आप के शीर्ष पर अपने SecondViewController
के दृश्य जोड़ सकते हैं ढेर, ताकि प्रतिनिधि प्रतिनिधियों को अभी भी बुलाया जा सके। आने वाले खाता दृश्य का उछाल प्रभाव नई UIView एनीमेशन विधि animateWithDuration:(NSTimeInterval) delay:(NSTimeInterval) usingSpringWithDamping:(CGFloat) initialSpringVelocity:(CGFloat) options:(UIViewAnimationOptions) animations:^(void)animations completion:^(BOOL finished)completion
(documentation में उस पर अधिक)
मुझे उम्मीद है कि यह आपकी परियोजना के साथ आपकी सहायता करेगा।
कृपया gif anim के लिए आप किस टूल का उपयोग कर रहे हैं? –
आप दोनों को "गठबंधन" करने का प्रयास कर सकते हैं: https://g.cubo.com/autresphere/ASDepthModal https://www.cocoacontrols.com/controls/namodalsheet या https://www.cocoacontrols.com/controls/mzformsheetcontroller के साथ – TonyMkenu