7

ここで基本的に行われているのは、UIBarButtonItemにカスタムビューを追加していて、それを45度回転する必要があることです。回転は、90度または180度回転すると完全に機能しますが、90度未満の場合、オブジェクトは変形します。 45度でオブジェクトが消えます。ボタンとアニメーションのスニペットは次のとおりです。

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

4 に答える 4

2

If the UIImageView contentMode is set to UIViewContentModeScaleAspectFit or other scaled aspect, the rotation will cause the image to disappear.

Changing the contentMode to UIViewContentModeCenter should fix the problem.

于 2015-06-22T22:26:14.907 に答える
2

anchorPoint を使用してインポートする "QuartzCore/QuartzCore.h"

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

お役に立てると思います。

于 2012-12-27T09:22:56.330 に答える
1

私はあなたとまったく同じ問題を抱えていました。私の問題は、viewDidLoadで回転を行っていたことです。

viewDidAppearで試してみてください。うまくいきました。

于 2013-04-30T22:11:45.217 に答える
0

はい、同じ問題がありました。viewDidLayoutSubViews で一度ディスパッチですべてを行いました..... CGAffineTransformMakeRotation(M_PI_2); は奇妙です。CGAffineTransformMakeRotation(M_PI); 動作しますが、これではありません。これが報告された問題であるかどうかを誰かが知っていれば、リンクが大好きです。

于 2014-05-01T14:33:04.833 に答える