2011-01-23 17 views
7

मैं छवि की ऊंचाई (0 पिक्सेल से 480 पिक्सेल की ऊंचाई से) को एनिमेट करने की कोशिश कर रहा हूं ताकि छवि को शीर्ष-नीचे प्रस्तुत किया जा सके।UIImage या UIImageView को एनिमेट करना?

UIImageView के साथ मैंने देखा कि यह इंटरफ़ेस बिल्डर में सही दिखाई देता है। लेकिन जब यह सिम्युलेटर में चलता है तो आकार (चौड़ाई और ऊंचाई) हमेशा छवि के आकार के सेट पर सेट होता है; जिसका अर्थ है, अगर मैं छवि दृश्य की ऊंचाई को मूल ऊंचाई 50% निर्धारित करता हूं, तो छवि अभी भी पूर्ण ऊंचाई में प्रस्तुत की जाती है।

मैंने यूआईएममेज के साथ इस प्रभाव को करने का भी प्रयास किया। हालांकि, हालांकि छवि का आकार सही दिखाई देता है, छवि आकार/पहलू अनुपात को प्रतिबिंबित करने के लिए स्केल की जाती है।

प्रश्न: छवि को स्केल करते समय मैं इस गतिशील आकार (यानी छवि के आकार का एनीमेशन) कैसे प्राप्त कर सकता हूं? मैंने CGImageCreateWithMask का उपयोग करने के बारे में सोचा, लेकिन मुझे यकीन है कि विशाल प्रदर्शन हिचकी बना देगा।

* अद्यतन *

प्रभाव है कि की तलाश में IM यह है: यह ऊंचाई में बड़े होते हैं, करने के लिए नीचे (अंधा का एक सेट की तरह एक खिड़की पर खींचा जा रहा है) से बना कर एक छवि एनिमेट करें। इस छवि को स्केल नहीं किया जा सकता है (क्योंकि यह "अंधे" की तरह दिखने का दृश्य प्रभाव खो देगा)। यह छवि किसी अन्य छवि के शीर्ष पर भी प्रस्तुत की जानी चाहिए। तो कुल 2 छवियां हैं।

* उत्तर *

सर्वोच्च imageView के लिए, मैं सामग्री मोड शीर्ष करने के लिए सेट (ताकि यह does not पैमाने पर)। फिर कोड में, मैंने क्लिप को सही करने के लिए क्लिप सेट किया। अब मैं शीर्ष-सबसे अधिक छविदृश्य ऊंचाई को एनिमेट करने में सक्षम हूं जिससे मुझे वह प्रभाव मिल रहा है जिसे मैं ढूंढ रहा हूं।

उत्तर

2

मूल पोस्ट में उल्लेख किया है, यहाँ जवाब मैं पर ठोकर खाई गए हैं लगता है :

शीर्ष-सबसे अधिक छविदृश्य के लिए, मैंने सामग्री मोड को शीर्ष पर सेट किया है (इसलिए यह स्केल नहीं करता है)। फिर कोड में, मैंने क्लिप को सही करने के लिए क्लिप सेट किया। अब मैं शीर्ष-सबसे अधिक छविदृश्य ऊंचाई को एनिमेट करने में सक्षम हूं जिससे मुझे वह प्रभाव मिल रहा है जिसे मैं ढूंढ रहा हूं।

2

आप एनीमेशन ब्लॉक देखना चाहते हैं। वे बहुत अच्छी तरह से यहाँ प्रलेखित रहे हैं:

http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/AnimatingViews/AnimatingViews.html

सभी कोड वहाँ प्रासंगिक है, क्योंकि UIImageView UIView का एक उपवर्ग है।

हैप्पी कोडिंग।

0

अपनी UIImageView की सामग्री मोड संपत्ति को निम्न मान में से किसी एक पर सेट करने का प्रयास करें।मुझे लगता है कि आप की जरूरत UIViewContentModeScaleAspectFit है:

typedef enum { 
    UIViewContentModeScaleToFill, 
    UIViewContentModeScaleAspectFit,  // contents scaled to fit with fixed aspect. remainder is transparent 
    UIViewContentModeScaleAspectFill,  // contents scaled to fill with fixed aspect. some portion of content may be clipped. 
    UIViewContentModeRedraw,    // redraw on bounds change (calls -setNeedsDisplay) 
    UIViewContentModeCenter,    // contents remain same size. positioned adjusted. 
    UIViewContentModeTop, 
    UIViewContentModeBottom, 
    UIViewContentModeLeft, 
    UIViewContentModeRight, 
    UIViewContentModeTopLeft, 
    UIViewContentModeTopRight, 
    UIViewContentModeBottomLeft, 
    UIViewContentModeBottomRight, 
} UIViewContentMode; 
+0

मैं उस प्रभाव को प्राप्त कर सकता हूं जो मैं देख रहा हूं अगर मैं UIViewContentModeTop का उपयोग करता हूं। फिर, यह प्रभाव आईबी में सही दिखता है। लेकिन जब मैं सिम्युलेटर में चलाता हूं तो छवि हमेशा छवि के वास्तविक आकार के रूप में प्रदर्शित होती है (एक आकार के बजाय जिसे मैंने आईबी में निर्दिष्ट किया है)। – AlvinfromDiaspar

+0

मैं आपके विवरण के बारे में उलझन में हूं। 1) क्या आप कुछ स्क्रीन शॉट पोस्ट कर सकते हैं? 2) हालांकि आपके पास आईबी में सेटिंग्स का एक सेट है, लेकिन हो सकता है कि आप रन टाइम के दौरान कोड को संशोधित/ओवरराइड कर सकते हों। 3) सिम्युलेटर सटीक नहीं हो सकता है, असली आईफोन पर परीक्षण करने का प्रयास करें। –

+0

कल्पना करें कि एक बहुत धीमे कनेक्शन पर एक वेब पेज प्रस्तुत किया जा रहा है। आप मूल रूप से शीर्ष-नीचे से खींचे गए पृष्ठ को देखते हैं। अनिवार्य रूप से मैं इस प्रभाव को बनाना चाहता हूं, जहां छवि धीरे-धीरे y = 0 से y = 480 तक छवि की ऊंचाई बढ़ाकर 320x480 छवि (UIImage या UIImageView) है। सामग्री मोड को शीर्ष के रूप में परिभाषित किया गया है (ताकि छवि सीमा का आकार बदलते समय छवि स्केल न हो)। – AlvinfromDiaspar

8

तो जैसे एक एनीमेशन ब्लॉक का उपयोग करें:

imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 0)]; 
imageView.image = ...; 
[imageView setClipsToBounds:YES]; 
[imageView setContentMode:UIViewContentModeTop]; 

[self.view addSubview:imageView]; 
[imageView release]; 

[UIView animateWithDuration:4.0f 
         delay:1.0f 
        options:UIViewAnimationOptionCurveEaseIn 
       animations:^(void) { 
        imageView.frame = CGRectMake(0, 0, 320, 480); 
       } 
       completion:NULL]; 
+0

बस उत्सुक, सामान्य UIView एनिमेशन (जहां आप एक एनीमेशन कर रहे हैं) का उपयोग करने से बेहतर एनीमेशन ब्लॉक हैं? – AlvinfromDiaspar

+0

@AlvinfromDiaspar अब वे आईओएस 4 के रूप में एनिमेशन करने के लिए अनुशंसित तरीका हैं। –

+0

@AlvinfromDiaspar क्या मेरा उदाहरण काम करता है? मैंने इसे स्थानीय रूप से परीक्षण किया है और यह खूबसूरती से काम करता है। –

2

बस एक सुझाव है, मान लें कि आपके दो छवियों है: एक और एक्स (एक्स-रे छवि):

+-------+    +-------+ 
|  |    |  | 
|  |    |  | 
| A |    | X | 
|  |    |  | 
|  |    |  | 
+-------+    +-------+ 

गतिशील रूप से आप,, एक-पिक्सेल उच्च छवि (अस्थायी) बना सकते हैं आंशिक रूप से एक्स से सामग्री की प्रतिलिपि एक के शीर्ष पर डाल दिया:

+-------+ +-------+ +-------+ 
|  | | temp1 | < |  | 
|  | +-------+ |  | 
| A |    | X | 
|  |    |  | 
|  |    |  | 
+-------+    +-------+ 

एक पाश, गतिशील,/बनाने अस्थायी छवि का आकार में और एक्स से अधिक सामग्री की प्रतिलिपि:

+-------+ +-------+ +-------+ 
|  | | temp2 | < |  | 
|  | |  | |  | 
| A | +-------+ | X | 
|  |    |  | 
|  |    |  | 
+-------+    +-------+ 

+-------+ +-------+ +-------+ 
|  | | temp3 | < |  | 
|  | |  | |  | 
| A | |  | | X | 
|  | +-------+ |  | 
|  |    |  | 
+-------+    +-------+ 
+-------+ +-------+ +-------+ 
|  | | temp4 | < |  | 
|  | |  | |  | 
| A | |  | | X | 
|  | |  | |  | 
|  | +-------+ |  | 
+-------+    +-------+ 

+-------+ +-------+ +-------+ 
|  | | tempX | < |  | 
|  | |  | |  | 
| A | |  | | X | 
|  | |  | |  | 
|  | |  | |  | 
+-------+ +-------+ +-------+ 
+0

मैंने इस बारे में सोचा, लेकिन ऐसा नहीं किया क्योंकि मुझे पता था कि यह वास्तव में अक्षम होगा, और शायद बहुत धीमी/चपटाई का जिक्र नहीं करेगा। – AlvinfromDiaspar

+0

आपके अपडेट किए गए उत्तर को याद किया, मुझे लगता है कि एक्स-रे छवि को स्केल नहीं किया जाना चाहिए ... – ohho

0

आपको आईपैड ट्यूटोरियल के लिए Flip Clock पर एक नज़र रखना चाहिए। यह कोर एनीमेशन के साथ है, इसलिए एक प्रदर्शन बोनस है।

+0

यूएच ओएच। ऐसा लगता है कि आपने एक पृष्ठ प्राप्त किया है जो पूर्ववत नहीं है। –

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