Iphone UIView翻转转换仅发生一次
我有一个包含两个其他UIView的UIView。我试着让它们在按下按钮时翻转。下面是我在按钮操作中翻转它们的代码:Iphone UIView翻转转换仅发生一次,iphone,objective-c,ios,xcode,ipad,Iphone,Objective C,Ios,Xcode,Ipad,我有一个包含两个其他UIView的UIView。我试着让它们在按下按钮时翻转。下面是我在按钮操作中翻转它们的代码: - (IBAction)btMapView:(id)sender { [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:1]; [UIView transitionFromView:mView1 toView:m_MapView duration:3 options
- (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移动到ViewWillDisplay,并将两个按钮方法更改为:
- (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];
}
请尝试以下操作:
- (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]; }];
}
在UIButton操作时使用以下代码,它工作正常:
SecondView *second=[[SecondView alloc] init];
[UIView transitionFromView:self.view toView:second.view duration:2.0 options:UIViewAnimationOptionTransitionFlipFromRight completion:nil];
这里SecondView是SecondView的名称。您不需要将transitionFromView放在begin/commitAnimations对中…因此,我确实删除了这些行,只留下transitionFromView,它会翻转一次,然后再翻转回来,但之后视图是空的。是的,我确实这样做了,但是视图转换了一次,然后视图变成了空白。@LilMoke:你真的试过我的代码吗?我添加了一个完成块。试试看。我添加了你发送的代码,但它做了同样的事情。。。第一次后视图为空。@LilMoke。。。编辑了我的代码。。试试看。如果那样不行,我就迷路了。。因为它在我的机器上工作DHmm我还注意到我在选项中使用了UIViewAnimationOptions ShowHideTransitionViews。。将编辑以上内容。