【问题标题】:Flipping a view inside a container, revealing a second view翻转容器内的视图,显示第二个视图
【发布时间】:2012-08-19 13:21:35
【问题描述】:

我目前正在使用此代码:

FlipView *fv = [[FlipView alloc]init];
[UIView transitionWithView:flipContainer
                  duration:1
                   options:UIViewAnimationOptionTransitionFlipFromLeft
                animations:^{ 
                    [flipContainer addSubview:fv];
                }
                completion:NULL];

翻转包含 UIImage 的容器视图以显示第二个视图 (FlipView)。 FlipView 是一个 UIView,它的背景设置为红色以便调试。

现在发生的情况是容器翻转,但它显示的内容与以前相同,尽管使用了:

[flipContainer addSubview:fv];

我做错了什么?

【问题讨论】:

    标签: ios uiview core-animation


    【解决方案1】:

    如果添加没有动画的子视图会发生什么?子视图是否出现?也许子视图没有被正确初始化(比如它的框架没有被正确设置?)

    你可以尝试这样初始化:

    CGRect frame = CGRectMake(xOrigin,yOrigin,width,height);
    FlipView *fv = [[FlipView alloc] initWithFrame:frame];
    

    或者尝试设置 FlipView 的 frame 属性:

    FlipView *fv = [[FlipView alloc]init];
    CGRect frame = CGRectMake(xOrigin,yOrigin,width,height);
    fv.frame = frame;
    

    【讨论】:

    • 如果我尝试在没有动画的情况下添加视图,则会发生注释。应该是框架。容器是 90*60,而视图只是 UIView 的一个子类。我该怎么做才能让它出现?
    • 你可以设置 FlipView 的 frame 属性,也可以用 frame 来初始化它。尝试使用 xOrigin=0,yOrigin=0,width=90,height=60)。你在哪里设置 FlipView 的背景颜色?
    • 谢谢,这行得通!我尝试在 initWithFrame 中执行此操作,但最终只是绘制了一个矩形。为了让它看起来好像在翻转,我不断添加一个新的基于 isPrimary 是 YES 还是 NO 的子视图。有没有办法在添加新视图之前删除当前视图,以便屏幕上一次只有一个视图?目前,我只是将它们堆叠在一起。
    • 没关系,回答我自己的问题!我用于 (UIView *subview in flipContainer.subviews) { [subview removeFromSuperview];这可以接受吗?
    • 什么是“isPrimary”?您可以使用 [aSubiew removeFromSuperView] 从 containerView 中删除子视图; (其中 aSubview 是指向要删除的子视图的指针)。您可以在添加新子视图之前将该行代码添加到动画块中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-02
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    相关资源
    最近更新 更多