UIView 和 ScrollView 之间的 UIView 过渡翻转

Posted

技术标签:

【中文标题】UIView 和 ScrollView 之间的 UIView 过渡翻转【英文标题】:UIView transition flip between UIView and ScrollView 【发布时间】:2013-09-06 10:21:03 【问题描述】:

我在 UIView 和 UIScrollView 之间做一个翻转动画。翻转动画没问题。问题是我不能在两个视图之间来回翻转。检查我的代码。 我有一个名为 mapViewShowing 的 BOOL 变量来检查当前视图。

当我点击栏按钮时,我的初始视图是滚动视图,视图将在地图视图和滚动视图之间切换。 我可以在两个视图之间翻转两次。之后翻转动画在地图视图处停止并且不能再翻转。 两个视图都在同一个父视图下。请帮帮我。谢谢。

if(!mapViewShowing) 
    [UIView transitionFromView:self.scrollView
                    toView:self.mapView
                  duration:1
                   options:UIViewAnimationOptionTransitionFlipFromLeft
                completion:^(BOOL finished) 
                    mapViewShowing = YES;
                ];
 else 
    [UIView transitionFromView:self.mapView
                        toView:self.scrollView
                      duration:1
                       options:UIViewAnimationOptionTransitionFlipFromRight
                    completion:^(BOOL finished) 
                        mapViewShowing = NO;
                    ];

【问题讨论】:

尝试在容器 uiview 中添加滚动视图,然后使用相同的代码。 第二次翻转后仍然卡住 【参考方案1】:

这行得通

在 .m 文件中

- (void)viewDidLoad

    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    [container addSubview:page1];  //You need a container view should have the same size as
                                   //as the view that you will animate
    mainViewVissible=YES;



- (void)didReceiveMemoryWarning

    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.

- (IBAction)doFlip:(id)sender 


    [UIView transitionFromView: (mainViewVissible ? page1:page2)
                        toView: (mainViewVissible ? page2 : page1)
                      duration:0.5
                       options:UIViewAnimationOptionTransitionFlipFromLeft
                    completion:^(BOOL finished)

                        mainViewVissible=!mainViewVissible;
                        /* do something on animation completion */
                    ];





在.h文件中

@property (weak, nonatomic) IBOutlet UIView *container;
@property (strong, nonatomic) IBOutlet UIView *page1; //I have the view in the nib
@property (strong, nonatomic) IBOutlet UIView *page2;
@property (weak, nonatomic) IBOutlet UIButton *flipBtn;

希望这会有所帮助

【讨论】:

【参考方案2】:

要来回过渡,您应该将UIViewAnimationOptionShowHideTransitionViews 添加到两个过渡动画的options 参数中。你的options 参数应该是UIViewAnimationOptionShowHideTransitionViews | UIViewAnimationOptionTransitionFlipFromLeft

【讨论】:

以上是关于UIView 和 ScrollView 之间的 UIView 过渡翻转的主要内容,如果未能解决你的问题,请参考以下文章

在uiscrollview中的多个uiview之间传递数据

在 ScrollView 的 ContentView 中拉伸 UIView

Swift - 在滚动时增大和缩小 UIView

在 ScrollView 中加载自定义 UIView

Embedding UITableView 嵌入一个 ScrollView,嵌入一个 UIView

将 UIView 添加到 ScrollView 以进行分页