2012-12-27 22 views
7

मूल रूप से यहां क्या हो रहा है यह है कि मैं UIBarButtonItem पर एक कस्टम दृश्य जोड़ रहा हूं, और मुझे इसे 45 डिग्री से घूमने की आवश्यकता है, घूर्णन 90 डिग्री या 180 तक घुमाए जाने पर पूरी तरह से काम करता है, लेकिन जब यह होता है कम से कम 9 0 वस्तु विकृत हो जाती है, और 45 डिग्री पर वस्तु गायब हो जाती है। बटन और एनीमेशन के लिए स्निपेट यहां दिए गए हैं।आईओएस UIImageView रोटेशन के बाद गायब हो जाता है M_PI_4

UIImageView * menuImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"plus.png"]]; 
menuButton = [[UIBarButtonItem alloc] initWithCustomView:menuImage]; 
UITapGestureRecognizer * tap1 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(toggleMenuView:)]; 
[menuImage addGestureRecognizer:tap1]; 
[menuImage setUserInteractionEnabled:YES]; 
[menuImage.layer setShadowColor:[UIColor blackColor].CGColor]; 
[menuImage.layer setShadowOffset:CGSizeMake(ShadowSizeWidth, ShadowSizeHeight)]; 
[menuImage.layer setShadowOpacity:ShadowOpacity]; 
[menuImage.layer setShadowRadius:ShadowRadius]; 

[self.navigationItem setRightBarButtonItem:menuButton]; 

रोटेशन:

[UIView animateWithDuration:animationRotateButtonDuration delay:0.0f options:UIViewAnimationCurveLinear animations:^{ 
    CGAffineTransform myTransform = CGAffineTransformMakeRotation(-M_PI_4); 

    UIBarButtonItem * currentItem = menuButton; 

    currentItem.customView.transform = myTransform; 

}completion:^(BOOL finished){ 
}]; 
+0

मैं एक बार बटन आइटम के कस्टम दृश्य को घुमाने और एक ही चीज़ में चलने की कोशिश भी कर रहा हूं। अन्य विचार M_PI_4 द्वारा बस घुमाए गए हैं, इसलिए मुझे आश्चर्य है कि यह UIBarButtonItem (?) के साथ कुछ करना है या नहीं। –

+0

UIBarButtonItem पृष्ठभूमि के रूप में एक कस्टम दृश्य लेता है, अब यह काम जिसने इस काम को बनाया है, यह है कि मैंने जो कस्टम व्यू चुना है वह एक UIImageView था जिसमें बच्चे के रूप में एक और UIImageView था, मुझे यह काम करने के लिए इस दूसरे UIImageView को घुमा देना पड़ा। मुझे लगता है कि यह UIBarButtonItem हाँ से संबंधित है। – Noob

उत्तर

1

उपयोग anchorPoint और आयात "QuartzCore/QuartzCore.h"

currentItem.customView.layer.anchorPoint = CGPointMake(1.0, 0.0);//it is not fixed point you have to change. 

मुझे लगता है कि यह आपके लिए उपयोगी साबित होगा।

+0

आपके उत्तर के लिए धन्यवाद, लेकिन यह काम नहीं कर रहा है, M_PI_2 के लिए बिंदु (1.0,0.0), (0.5,0.5), (0.0,0.0) के साथ काम करेगा .. लेकिन M_PI_4 के लिए छवि नहीं होगी गायब होना। – Noob

+0

इन बिंदुओं (0.4, 0.1), (0.8, 0.3) आज़माएं और आपको तब तक बदलना होगा जब तक आप प्राप्त न करें। यह समस्या केवल एंकरपॉइंट की वजह से है और रोटेशन से पहले इस लाइन को जोड़ें। –

+0

अभी भी काम नहीं करता है .. – Noob

1

मेरे पास बिल्कुल वही समस्या थी। मेरी समस्या यह थी कि मैं व्यूडिडलोड में रोटेशन कर रहा था।

viewDidAppear में ऐसा करने का प्रयास करें, यह मेरे लिए काम करता है।

0

हाँ, मेरे पास एक ही समस्या थी। मैंने एक बार प्रेषण में सब कुछ किया था एक बार देखने के दौरान DidLayoutSubViews ..... यह विचित्र है कि CGAffineTransformMakeRotation (M_PI_2); और CGAffineTransformMakeRotation (M_PI); काम करता है लेकिन यह नहीं। अगर कोई जानता है कि यह एक रिपोर्ट मुद्दा है तो मुझे लिंक पसंद आएगा।

1

यदि UIImageView सामग्री मोड UIViewContentModeScaleAspectFit या अन्य स्केल किए गए पहलू पर सेट है, तो रोटेशन छवि गायब हो जाएगा।

सामग्री को बदलना UIViewContentModeCenter को मोड को समस्या को ठीक करना चाहिए।

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