2013-12-13 6 views
5

क्या कोई यह जानता है कि मौजूदा दृश्य नियंत्रक के दृष्टिकोण को कैसे कम किया जाए और पारदर्शिता के साथ किसी अन्य पर इसे कैसे रखा जाए? यह Tweetbot 3 में प्राप्त होता है जब आप नेविगेशन बार पर ऊपरी बाईं ओर अपने अवतार पर टैप करते हैं। क्या मुझे उदाहरण के लिए स्नैपशॉट लेना चाहिए?ट्वीटबॉट दृश्य संक्रमण को कम करने की तरह

The Tweetbot transition I mean http://www.yoeri.me/files/tweetbot-transition.gif

+0

कृपया gif anim के लिए आप किस टूल का उपयोग कर रहे हैं? –

+0

आप दोनों को "गठबंधन" करने का प्रयास कर सकते हैं: https://g.cubo.com/autresphere/ASDepthModal https://www.cocoacontrols.com/controls/namodalsheet या https://www.cocoacontrols.com/controls/mzformsheetcontroller के साथ – TonyMkenu

उत्तर

3

आदेश इस आशय आप स्क्रैच से अपने दृश्य को ढेर के पुनर्निर्माण के लिए होगा प्राप्त करने के लिए।

@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 में उस पर अधिक)

मुझे उम्मीद है कि यह आपकी परियोजना के साथ आपकी सहायता करेगा।

+6

मुझे बहुत संदेह है कि वे दृश्य को कम करने के लिए फ्रेम बदल रहे हैं। एक पैमाने परिवर्तन में अधिक संभावना है। –

+0

इसे एनिमेट करने के विभिन्न तरीकों का एक गुच्छा है, लेकिन आपको कंटेनर –

+0

डालना होगा, मैं इसे आज़माउंगा, लेकिन क्या आप मुझे बता सकते हैं कि मैं 'SecondViewController' कहता हूं, इसलिए मैं अभी भी 'blurredView' को अभी तक बना सकता हूं जिसे हमने अभी बनाया है? मुझे लगता है कि सेटिंग '[यूआईसीओलर क्लियर कलर]' सेटिंग है क्योंकि यह पृष्ठभूमि है। रंग इसे काट नहीं देता है। – yoeriboven

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