【问题标题】:iOS: Toggling between UIScrollView views without adding new views?iOS:在 UIScrollView 视图之间切换而不添加新视图?
【发布时间】:2011-06-22 10:11:12
【问题描述】:

我有问题!当我使用 addSubview: 并向 UIScrollView 添加视图时,它会添加一个全新的视图。

我想要:

  • 在 3 个预定义视图之间切换,或
  • 在添加另一个视图之前从 UIScrollView 中删除最后一个视图。

(所有 3 个视图都有一些图像,所以我想第二个选项在内存方面会更有效。但是,也许第一个选项在电池寿命方面会更好?这是一个“子问题”。)

如何做到这一点?

【问题讨论】:

    标签: iphone ios uiscrollview


    【解决方案1】:

    您可以使用UIViewremoveFromSuperview 功能来完成您的计划B。

    如下使用。

    [mySecondImageView removeFromSuperview];
    [myScrollView addSubview:myThirdImageView];
    

    已编辑:

    当您创建 UIImageView 时,为每个分配一个标签值,并使用整数 iVar 来保存当前视图的标签值,假设它是 currentViewTag ;

    myFirstImageView.tag = 1;
    mySecondImageView.tag = 2;
    myThirdImageView.tag = 3;
    
    currentViewTag = 1;
    [myScrollView addSubview:myFirstImageView];
    

    现在如下使用

    [[myScrollView viewWithTag:currentViewTag] removeFromSuperview];
    [myScrollView addSubview:myThirdImageView];
    currentViewTag = 3;
    

    【讨论】:

    • 谢谢贾利亚。有没有办法,而不是使用“mySecondImageView”,获取 UIScroll 视图的当前视图?例如:类似 [[myScrollView currentView] removeFromSuperview]?
    • 非常感谢,贾利亚。这正是我想要的!
    • 更新:[[myScrollView viewWithTag:currentViewTag] removeFromSuperview] 给我带来了问题。由于某种原因,它不会让任何其他视图加载(我什至检查以确保标签和 currentTagView 编号正确),所以我使用了从stackoverflow.com/questions/1340754/… 找到的另一种方法
    【解决方案2】:

    在我看来,您正在尝试像照片应用程序那样实现无限滚动的 uiscrollview。

    如果是这样,您不需要删除任何子视图并添加它们,您只需要创建一个与您的三个图像一样宽的 UIScrollView,然后当滚动视图滚动时,在任一位置更改图像1 或 3 取决于执行滚动的方式,然后重置滚动视图的位置。如果这是您想要做的,如果您需要,我可以提供更多信息。

    【讨论】:

    • 感谢您的建议,但我真正要做的只是 3 个按钮,当您单击每个按钮时,会将 UIScrollView 更改为另一个视图(视图中有一些图像(尽管视图的焦点不在图像上))。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    相关资源
    最近更新 更多