2012-12-27 9 views
7

基本的にここで起こっているのは、UIBarButtonItemにカスタムビューを追加することです。これを45度回転する必要があります。回転は90度または180度回転すると完全に動作しますが、オブジェクトが変形しても90未満になり、オブジェクトが消えると45°になります。 ボタンとアニメーションのスニペットを次に示します。iOS 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でした。この2番目のUIImageViewを回転させてこの作業をしなければなりませんでした。 UIBarButtonItem yesに関連していると思います。 – 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

ありがとうございますが、これはうまくいかないようですが、ポイント(1.0,0.0)、(0.5,0.5)、(0.0,0.0)でM_PI_2に対応しますが、M_PI_4では画像は表示されません姿を消す。 – Noob

+0

これらのポイント(0.4、0.1)、(0.8、0.3)を試してください。この問題はアンカーポイントのためだけであり、回転の前にこの行を追加します。 –

+0

まだ動作しません.. – Noob

1

私はあなたとまったく同じ問題を抱えていました。私の問題は、私がviewDidLoadのローテーションをしていたことでした。

viewDidAppearでそれを行うようにしてください、それは私のために働いた。

0

私は同じ問題がありました。私はviewDidLayoutSubViewsで一度だけディスパッチしました.....それは奇妙です、CGAffineTransformMakeRotation(M_PI_2);およびCGAffineTransformMakeRotation(M_PI)。しかし、これは動作しません。これが報告された問題であるかどうか誰かが分かっていれば、私はそのリンクを愛するだろう。

1

UIImageView contentModeがUIViewContentModeScaleAspectFitまたはその他の拡大縮小されたアスペクトに設定されている場合、回転すると画像が消えます。

contentModeをUIViewContentModeCenterに変更すると問題が解決するはずです。

関連する問題