【问题标题】:Getting subviews of a UIView within a UIScrollview在 UIScrollview 中获取 UIView 的子视图
【发布时间】:2013-10-12 23:39:54
【问题描述】:

我有一个 UIScrollView,其中包含 UIViews,并且在这些 UIViews 中是 UIImageViews。我正在尝试访问UIImageViews

为了概念验证,我有一个带有 UIView 的滚动视图,其中包含一个 UIImageView,其标签都设置为 0。

代码:

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{

UIView *currentView = (UIView *)[scrollView viewWithTag:0];
UIImageView *currentImageView = (UIImageView *)[currentView viewWithTag:0];

[self bobbleView:currentImageView];

}

然后我试图连续上下摆动 UIImageView(这本身就是另一回事,我只能让它摆动一次,所以我只是留下了那个代码),但发生的是 整个 UIScrollView 及其子视图都在晃动。

那个代码:

-(void)bobbleView:(UIView *)viewIn{

        viewIn.transform = CGAffineTransformMakeScale(1.2, 1.2);
        [UIView animateWithDuration:1 animations:^{
            viewIn.transform = CGAffineTransformMakeScale(1.0, 1.0);
        }];

}

有什么想法吗?

【问题讨论】:

  • 为标签的值选择 0 可能是不明智的,因为这是任何新创建的 UIView 的默认值。此外,viewWithTag 会遍历子层次结构(递归地,“向下”),这意味着如果您对标签值不小心,您可能会返回一个您不想获得的视图。

标签: ios objective-c


【解决方案1】:

viewWithTag 文档说:

Discussion
This method searches the _current view_ and all of its subviews for the specified view.

(强调我的)

你看到的是:

(UIImageView *)[currentView viewWithTag:0]

返回

currentView

HTH

【讨论】:

    【解决方案2】:

    是的.. 为视图分配唯一的标签并且彼此不同。我敢打赌,如果您在调用 bobbleView 时设置断点,您的 UIImageView 对象将是您的 UiScrollView 而不是 imageview 或 UiView...使用简单的唯一标签,例如 100X fir UIViews 和 200X for imageview

    【讨论】:

    • 你叫它......回想起来,0 可能是其历史上标签名称的最佳最差选择。
    猜你喜欢
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 2012-01-31
    • 2013-07-26
    • 1970-01-01
    相关资源
    最近更新 更多