【问题标题】:UIView Flip Transition only occurring onceUIView 翻转转换只发生一次
【发布时间】:2012-10-16 17:32:01
【问题描述】:

我有一个包含其他两个 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];
}

而我的第二个视图只有一个标签。

当我触摸 btMapView 按钮时,翻转发生在另一个视图上,但是当我按下 btListView 按钮时它不会翻转回来。

谁能解释一下我可能做错了什么?

感谢您的帮助。

编辑:

通过将我的代码从 viewDidLoad 移动到 viewWillAppear 并将两个按钮方法更改为此:

- (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];
}

【问题讨论】:

  • 您不需要将 transitionFromView 放在 begin/commitAnimations 对中...
  • 所以,我确实删除了这些行并离开了 transitionFromView 并且它确实翻转了一次然后翻转回来,但之后视图是空白的。

标签: iphone objective-c ios xcode ipad


【解决方案1】:

尝试以下方法:

- (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]; }];
}

【讨论】:

  • 是的,我确实这样做了,但是视图转换了一次,然后视图是空白的。
  • @LilMoke:你真的尝试过我的代码吗?我添加了一个完成块。试试看。
  • 我添加了你发送的代码,但它做同样的事情......第一次之后视图是空白的。
  • @LilMoke ...编辑了我的代码..试试看。如果那不起作用,那么我迷路了..因为它可以在我的机器上运行! :D
  • 嗯,我还注意到我在选项中使用 UIViewAnimationOptionShowHideTransitionViews .. 将编辑上述内容。
【解决方案2】:

在 UIButton 操作中使用以下代码,它正常工作:

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

这里的 SecondView 是 SecondView 的名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    • 2021-08-29
    • 2012-09-09
    • 1970-01-01
    相关资源
    最近更新 更多