iPhone子视图在两个视图之间翻转

10

iPhone/Objective-C

在我的观点中,当用户在主视图上点击按钮后,会出现一个小的“悬停”视图。当用户点击此子视图时,我希望该子视图会以从右侧向左翻转的方式切换到另一个视图(大小相同)。底部的主视图应保持不变。

viewHotviewCold是子视图,viewMain是主视图。

这可能吗?


我已经使用了以下代码,它运行良好,但有一个问题。我在viewHot中有一个tableView。当执行"else"部分时,viewHot出现了。但是coldView仍然在viewHot后面,所以当我将tableView滚动到最大或最小时,可以看到coldView。你有什么猜测吗? - Maulik
我尝试了 removeFromSuperView,hidden = YES 等等,但是没有成功...!!! - Maulik
1个回答

22

在viewMain中创建另一个名为viewHover的空视图,并将其定位到您想要显示悬停视图的位置。然后在IB中,将viewHot或viewCold(不是两者都)添加为viewHover的子视图。

然后调用这样的方法来翻转视图:

-(void)flipViews
{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:1.0];  
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:viewHover cache:YES];

    if ([viewHot superview])
    {
        [viewHot removeFromSuperview];
        [viewHover addSubview:viewCold];
        [viewHover sendSubviewToBack:viewHot];
    }
    else
    {
        [viewCold removeFromSuperview];
        [viewHover addSubview:viewHot];
        [viewHover sendSubviewToBack:viewCold];
    }

    [UIView commitAnimations];
}

2
这段代码帮助我展示了一个小的模态视图。 谢谢。 - Sasho
8
提醒一下,使用新的动画块可以将动画压缩成一行代码:[UIView transitionFromView:viewHot toView:viewCold duration:1.f options:UIViewAnimationOptionTransitionFlipFromLeft completion:nil]; - yuf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接