2012-12-27 13 views
7

Quello che sta praticamente succedendo qui è che sto aggiungendo una vista personalizzata a UIBarButtonItem, e ho bisogno di ruotarlo di 45deg, la rotazione funziona perfettamente se ruotata di 90deg o 180, ma quando è meno di 90 l'oggetto si deforma e su 45 gradi l'oggetto scompare. Ecco i frammenti per il pulsante e l'animazione.iOS UIImageView scompare dopo la rotazione 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]; 

la rotazione:

[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

Sto anche provando a ruotare la vista personalizzata di un pulsante della barra e ad eseguire la stessa cosa. Altre viste ruotano di M_PI_4 bene, quindi mi chiedo se abbia qualcosa a che fare con UIBarButtonItem (?). –

+0

UIBarButtonItem prende una vista personalizzata come sfondo, ora il trucco che ha funzionato, è che la vista personalizzata che ho scelto era una UIImageView che aveva un altro UIImageView da bambino, ho dovuto ruotare questo secondo UIImageView per farlo funzionare. Penso che sia correlato a UIBarButtonItem sì. – Noob

risposta

1

Usa AnchorPoint e importare "QuartzCore/QuartzCore.h"

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

penso che sarà utile a voi.

+0

Grazie per la risposta, ma questo non sembra funzionare, funzionerà per M_PI_2 con punto (1.0,0.0), (0.5.0.5), (0.0.0.0) .. ma non per M_PI_4 l'immagine sarà scompaiono. – Noob

+0

Prova questi punti (0.4, 0.1), (0.8, 0.3) e devi cambiare finché non ottieni. Questo problema è solo a causa di anchorPoint e aggiungere questa linea prima della rotazione. –

+0

Ancora non funziona .. – Noob

1

Ho avuto esattamente lo stesso problema di te. Il mio problema era che stavo facendo la rotazione nel viewDidLoad.

Provare a farlo nella viewDidAppear, ha funzionato per me.

0

Sì, ho avuto lo stesso problema. Ho fatto tutto in un dispaccio una volta in viewDidLayoutSubViews ..... È strano che CGAffineTransformMakeRotation (M_PI_2); e CGAffineTransformMakeRotation (M_PI); funziona ma non questo. Se qualcuno sa se questo è un problema segnalato mi piacerebbe il collegamento.

1

Se UIImageView contentMode è impostato su UIViewContentModeScaleAspectFit o altro aspetto ridimensionato, la rotazione causerà la scomparsa dell'immagine.

La modifica del contentMode su UIViewContentModeCenter dovrebbe risolvere il problema.

Problemi correlati