2012-12-27 95 views
7

這裏基本上發生的是我向UIBarButtonItem添加一個自定義視圖,並且我需要將它旋轉45deg,如果旋轉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作爲子項,我不得不旋轉第二個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),你必須改變,直到你得到。這個問題只是因爲anchorPoint,並且在旋轉之前添加了這一行。 –

+0

仍然無法正常工作.. – Noob

1

我和你有完全一樣的問題。我的問題是我在做viewDidLoad的輪換。

試着去做viewDidAppear,它爲我工作。

0

是的,我有同樣的問題。我在viewDidLayoutSubViews中調用了一次dispatch ..... CGAffineTransformMakeRotation(M_PI_2);和CGAffineTransformMakeRotation(M_PI);作品,但不是這個。如果有人知道這是否是一個報道的問題,我會喜歡這個鏈接。

1

如果UIImageView contentMode設置爲UIViewContentModeScaleAspectFit或其他縮放方面,則旋轉將導致圖像消失。

將contentMode更改爲UIViewContentModeCenter可以解決問題。