7 Stimmen

IOS UIImageView verschwindet nach Rotation M_PI_4

Was hier im Grunde passiert, ist, dass ich einer UIBarButtonItem eine benutzerdefinierte Ansicht hinzufüge und sie um 45 Grad drehen muss. Die Drehung funktioniert perfekt, wenn sie um 90 Grad oder 180 Grad gedreht wird, aber wenn sie weniger als 90 Grad beträgt, wird das Objekt verformt, und bei 45 Grad verschwindet das Objekt. Hier sind die Code-Schnipsel für die Schaltfläche und die Animation.

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];

Die Rotation:

[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){
}];

1voto

Prasad G Punkte 6630

Verwenden Sie anchorPoint und importieren Sie "QuartzCore/QuartzCore.h"

currentItem.customView.layer.anchorPoint = CGPointMake(1.0, 0.0);//Es ist kein fester Punkt, den Sie ändern müssen.

Ich denke, das wird Ihnen helfen.

1voto

kevinooo Punkte 43

Ich hatte genau das gleiche Problem wie du. Mein Problem war, dass ich die Rotation im viewDidLoad gemacht habe.

Versuche es im viewDidAppear zu machen, das hat bei mir funktioniert.

1voto

aepryus Punkte 4407

Wenn der InhaltModus UIImageView auf UIViewContentModeScaleAspectFit oder einem anderen skalierten Aspekt eingestellt ist, führt die Rotation dazu, dass das Bild verschwindet.

Das Ändern des contentMode auf UIViewContentModeCenter sollte das Problem beheben.

0voto

TheCodingArt Punkte 3319

Ja, ich hatte das gleiche Problem. Ich habe alles in einer dispatch-Ansicht in viewDidLayoutSubViews gemacht..... Es ist seltsam, dass CGAffineTransformMakeRotation(M_PI_2); und CGAffineTransformMakeRotation(M_PI); funktionieren, aber nicht das. Wenn jemand weiß, ob dies ein gemeldetes Problem ist, würde ich mich über den Link freuen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X