0

他の 2 つの UIView を含む UIView があります。ボタンを押してフリップさせようとしています。ボタンアクションでそれらを反転するコードは次のとおりです。

- (IBAction)btMapView:(id)sender
{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:1];
    [UIView transitionFromView:mView1 toView:m_MapView duration:3 options:UIViewAnimationOptionTransitionFlipFromLeft completion:NULL];
    [UIView commitAnimations];
}

- (IBAction)btListView:(id)sender
{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:1];
    [UIView transitionFromView:m_MapView toView:mView1 duration:3 options:UIViewAnimationOptionTransitionFlipFromRight completion:NULL];
    [UIView commitAnimations];
}

次のように、viewDidLoad で m_MapView を初期化します。

- (void)viewDidLoad
{
    [super viewDidLoad];

    [m_MapView setMapType:MKMapTypeHybrid];
    [m_MapView setZoomEnabled:YES];
    [m_MapView setScrollEnabled:YES];
    MKCoordinateRegion region = { {0.0, 0.0 }, { 0.0, 0.0 } };
    region.center.latitude = 42.761738 ;
    region.center.longitude = -71.463180;
    region.span.longitudeDelta = 0.01f;
    region.span.latitudeDelta = 0.01f;
    [m_MapView setRegion:region animated:YES];
    m_MapView.showsUserLocation = YES;
    [m_MapView setDelegate:self];

    CLLocationCoordinate2D zoomLocation;
    zoomLocation.latitude = 42.761738;
    zoomLocation.longitude = -71.463180;

    MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(zoomLocation, .25*METERS_PER_MILE, .25*METERS_PER_MILE);
    MKCoordinateRegion adjustedRegion = [m_MapView regionThatFits:viewRegion];

    m_MapView.autoresizingMask =
    (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);

    [m_MapView setRegion:adjustedRegion animated:YES];

    DisplayMap * myLoc = [[DisplayMap alloc] init];
    myLoc.title = @"myLoc";
    myLoc.subtitle = @"Main Office";
    myLoc.coordinate = region.center;
    [m_MapView addAnnotation:myLoc];
}

2 番目のビューには、ラベルが付いているだけです。

btMapView ボタンをタッチすると他のビューに反転しますが、btListView ボタンを押しても反転しません。

私が間違っている可能性があることに誰かが光を当てることができますか?

助けてくれてありがとう。

編集:

コードを viewDidLoad から viewWillAppear に移動し、2 つのボタン メソッドを次のように変更することで、これが機能するようになりました。

- (IBAction)btMapView:(id)sender
{
    [UIView transitionFromView:mView1
                        toView:m_MapView
                      duration:1
                       options:UIViewAnimationOptionTransitionFlipFromLeft | UIViewAnimationOptionShowHideTransitionViews 
                    completion:nil];
}

- (IBAction)btListView:(id)sender
{
    [UIView transitionFromView:m_MapView
                        toView:mView1
                      duration:1
                       options:UIViewAnimationOptionTransitionFlipFromRight | UIViewAnimationOptionShowHideTransitionViews 
                    completion:nil];
}
4

2 に答える 2

0

次のことを試してください。

- (IBAction)btMapView:(id)sender
{
    [mView1.superview addSubview: m_MapView];
    [UIView transitionFromView:mView1 toView:m_MapView duration:3 options:UIViewAnimationOptionTransitionFlipFromLeft | UIViewAnimationOptionShowHideTransitionViews completion: ^(BOOL finished) { [mView1 removeFromSuperview]; }];
}

- (IBAction)btListView:(id)sender
{
    [m_MapView.superview addSubview: mView1];
    [UIView transitionFromView:m_MapView toView:mView1 duration:3 options:UIViewAnimationOptionTransitionFlipFromRight | UIViewAnimationOptionShowHideTransitionViews completion:^(BOOL finished) { [m_MapView removeFromSuperview]; }];
}
于 2012-10-16T17:38:17.273 に答える
0

UIButton アクションで次のコードを使用します。正常に動作しています。

    SecondView *second=[[SecondView alloc] init];
    [UIView transitionFromView:self.view toView:second.view duration:2.0 options:UIViewAnimationOptionTransitionFlipFromRight completion:nil];

ここで SecondView は SecondView の名前です。

于 2012-10-17T12:06:51.950 に答える