2010-10-29 190 views
4

我無法實現與下面的代碼的任何動畫:的UIView動畫塊不是動畫視圖的子視圖

if (self.segmentControl.selectedSegmentIndex == 0) { 
    [UIView transitionFromView:tableView 
         toView:mapView 
         duration:1.0 
         options:UIViewAnimationTransitionFlipFromLeft 
        completion:nil 
     ]; 
    } 
if (self.segmentControl.selectedSegmentIndex == 1) { 
    [UIView transitionFromView:mapView 
         toView:tableView 
         duration:1.0 
         options:UIViewAnimationTransitionFlipFromRight 
        completion:nil 
     ]; 
} 

的觀點實際上是交換,而只是沒有任何動畫。這很奇怪。我也試圖交換mapViewtableViewself.view.subviews像這樣(objectAtIndex:0toolBar):

if (self.segmentControl.selectedSegmentIndex == 0) { 
    [UIView transitionFromView:[self.view.subviews objectAtIndex:1] 
         toView:[self.view.subviews objectAtIndex:2] 
         duration:1.0 
         options:UIViewAnimationTransitionFlipFromLeft 
        completion:nil 
     ]; 
    } 
if (self.segmentControl.selectedSegmentIndex == 1) { 
    [UIView transitionFromView:[self.view.subviews objectAtIndex:2] 
         toView:[self.view.subviews objectAtIndex:1] 
         duration:1.0 
         options:UIViewAnimationTransitionFlipFromRight 
        completion:nil 
     ]; 
} 

回答

17

您使用了錯誤的選項。使用這種方法,您應該使用the constants UIViewAnimationOptionTransitionFlipFromLeft and …Right

舊常量UIViewAnimationTransitionFlipFromLeft…Right應該只用於非基於塊的方法+setAnimationTransition:…。這些常數分別具有值1和2,而我上面提到的值具有完全不同的值1 < < 20和2 < < 20。

+0

非常感謝!我猜這是Xcode中的一個錯誤,它不會在編譯時暗示或者甚至認識到這個選項(儘管它編譯沒有錯誤,只是不會將文本顏色更改爲「OK」編譯選項)。 – runmad 2010-10-29 19:30:15

+0

@Canada:這不是Xcode中的一個bug,但是C標準('gcc')不會阻止不同'enum'的常量混合在一起。 – kennytm 2010-10-29 19:32:35

+0

是的,對不起,我多看了一下這個類,看到了編譯器的東西。謝謝:) – runmad 2010-10-30 20:34:46