2011-02-01 6 views
20

मैंने इसमें बहुत कुछ देखा है, लेकिन मुझे लगता है कि इस समस्या से संबंधित वेब व्यू और टेबल मिलते हैं। मेरा बिल्कुल अलग है यह एक ही दुर्घटना अपवाद के साथ लगता है:CALayerInvalidGeometry ', कारण:' कैलियर सीमाओं में NaN शामिल है: [0 0; नैन नान] क्रैश

कैलियर इन्वालिड जीमेट्री ', कारण:' कैलियर सीमाओं में NaN शामिल है: [0 0; नैन नान]

असल में मेरे पास जो कुछ है वह एक दृश्य है जो फीड और स्केल छवियों को देखता है। मैंने हाल ही में एक टाइमर टिक्स हर चीज को स्केल करने के बजाय एक UIView एनीमेशन में CGAffineTransformScale का उपयोग करके अपना कोड बदलने का निर्णय लिया है। यह कम प्रोसेसिंग पावर का उपयोग करता है।

कोई फर्क नहीं पड़ता कि मेरे पास चित्रों में कौन सा ऑर्डर है, यह हमेशा 1 9वीं के बाद दुर्घटनाग्रस्त हो जाता है। यह स्थिति समन्वय सरणी के साथ एक मुद्दा प्रतीत नहीं होता है, जो इसका संदर्भ देता है, क्योंकि यह इसकी लंबाई तक पहुंचने के बाद केवल 6 लंबाई और लूप होता है। तो अब किसी कारण से मैंने इस एनीमेशन कोड को लागू किया है, यह मुझे दुर्घटना देता है। किसी को पता है क्यों?

-(void) onTimer{ 

if(scaleTimer_A==5){ 

    imageView_A.image = [UIImage imageNamed:[attractList_A objectAtIndex:imageIndex_A]]; 

    imageView_A.frame = CGRectMake(300, 200, 3.86, 3.86); 

    imageView_A.center = CGPointMake(attractLocs_x_A[attractLocs_A_index], attractLocs_y_A[attractLocs_A_index]); 



    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:2]; 
    imageView_A.alpha = 1; 
    imageView_A.transform = CGAffineTransformScale(imageView_A.transform, 100, 100); 
    [UIView commitAnimations]; 
} 

if(scaleTimer_A==10){ 

    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:.75]; 
    imageView_A.alpha = 0; 
    imageView_A.transform = CGAffineTransformScale(imageView_A.transform, 1.2, 1.2); 
    [UIView commitAnimations]; 

    scaleTimer_A=0; 

    imageIndex_A+=1; 

    if(imageIndex_A==imageIndex_A_size){ 
     imageIndex_A=0; 
    } 

    attractLocs_A_index+=1; 

    if(attractLocs_A_index==attractLocs_A_SIZE){ 
     NSLog(@"Back to zero A"); 
     attractLocs_A_index=0; 
    } 
    NSLog(@"Image A =%@", [attractList_A objectAtIndex:imageIndex_A]); 
} 

scaleTimer_A+=1;} 

संपादित:

यहाँ भाग मैं बदल दिया है के बाद से यह दुर्घटनाग्रस्त शुरू कर दिया

यहाँ कैसे मैं CGAffineTransformIdentity का उपयोग कर दुर्घटनाग्रस्त समस्या के बिना काम करने के लिए ऊपर दिए गए कोड मिल गया है।

-(void) onTimer{ 

if(scaleTimer_A==5){ 

    imageView_A.image = [UIImage imageNamed:[attractList_A objectAtIndex:imageIndex_A]]; 

    imageView_A.transform = CGAffineTransformIdentity; 

    imageView_A.center = CGPointMake(attractLocs_x_A[attractLocs_A_index], attractLocs_y_A[attractLocs_A_index]); 



    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:2]; 
    imageView_A.alpha = 1; 
    imageView_A.transform = CGAffineTransformScale(CGAffineTransformIdentity, 100, 100); 
    [UIView commitAnimations]; 
} 

if(scaleTimer_A==10){ 

    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:.75]; 
    imageView_A.alpha = 0; 
    imageView_A.transform = CGAffineTransformScale(CGAffineTransformIdentity, 120, 120); 
    [UIView commitAnimations]; 

    scaleTimer_A=0; 

    imageIndex_A+=1; 

    if(imageIndex_A==imageIndex_A_size){ 
     imageIndex_A=0; 
    } 

    attractLocs_A_index+=1; 

    if(attractLocs_A_index==attractLocs_A_SIZE){ 
     NSLog(@"Back to zero A"); 
     attractLocs_A_index=0; 
    } 
    NSLog(@"Image A =%@", [attractList_A objectAtIndex:imageIndex_A]); 
} 

scaleTimer_A+=1;} 
+4

NaN सामान्य रूप से तब होता है जब आप शून्य से विभाजित। अपने सभी गणित के माध्यम से जाओ और दो बार जांचें। –

+0

मैंने यह भी सुना है, लेकिन इस कोड में मैं 0 से विभाजित कर रहा हूं? – VagueExplanation

+0

क्या आप स्टैक ट्रेस पोस्ट कर सकते हैं? – Max

उत्तर

11

समस्या का पता लगाने के ढेर के अनुसार यहां पहचान के लिए imageView_A.transform स्थापित करने के लिए

imageView_A.frame = CGRectMake(300, 200, 3.86, 3.86); 

कोशिश है। एक और समाधान (और मुझे बेहतर लगता है) स्केलिंग के लिए UIScrollView का उपयोग करेगा (इसे एनिमेटेड भी बनाया जा सकता है)।

संपादित करें: कोशिश इस

imageView_A.image = [UIImage imageNamed:[attractList_A objectAtIndex:imageIndex_A]]; 

    imageView_A.frame = CGRectMake(300, 200, 3.86, 3.86); 

    imageView_A.center = CGPointMake(attractLocs_x_A[attractLocs_A_index], attractLocs_y_A[attractLocs_A_index]); 



    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:2]; 
    imageView_A.alpha = 1; 
    imageView_A.frame = CGRectMake(300, 200, 386.0f, 386.0f); 
    [UIView commitAnimations]; 
+0

का एक उदाहरण फेंक मेरे मामले में, CGAffineTransformIdentity को imageView_A.transform सेट करने के बाद शुरू + 53 ) बुलाया समाप्त बराबर नहीं हैं। UIScrollView मुझे अधिक समझ में नहीं आता है, खासकर यदि मैं स्वतंत्र रूप से कई छवि दृश्यों को बदलना चाहता हूं। ImageView_A के लिए फ्रेम को किसी समस्या का क्यों होना चाहिए? – VagueExplanation

+0

क्योंकि क्रैश छवि View_A.frame – Max

+0

की स्थापना के दौरान ठीक है, धन्यवाद। ऐसा लगता है कि दुर्घटनाग्रस्त हो गया है। मुझे बस इसे ट्विक करने के लिए एक काम को समझना होगा, इसलिए यह इस तरह व्यवहार करता है। – VagueExplanation