UIView中心是否在视图中更新,具体取决于我是否在代码中添加了另一个uiimageview

时间:2014-03-28 22:17:55

标签: ios uiview

我创建了2个UIViews阵列(游戏棋子,线索)。我正在尝试更新其中一些UIViews的中心。如果我在更新中心后没有添加视图,则中心会在模拟器中更新。但是,如果我添加另一个视图,它不会更新。你能帮我理解这里发生了什么,以及我如何让阵列中的UIview一直更新?

下面的示例代码:(注意 - for循环遍历UIView数组以确定哪一个将被更新)

    for (int i=0; i<[newPositionArray count]; i++)
    {
        NSString *imageIdentifier = [newPositionArray objectAtIndex:i];
        CGPoint newCenter;
        newCenter = .... code to calculate new center

        if ([imageIdentifier compare:@""])
        {
            BOOL clueFound = NO;
            for (UIView *piece in _gamePieces)
            {
                if (![[piece  accessibilityIdentifier] compare:imageIdentifier])
                {
                    piece.center = newCenter;
                    [piece setAlpha:0.5];
                    clueFound = YES;
                }
            }

            if (!clueFound)
            {
                for (UIView *clue in _attributeClues)
                {
                    if (![[clue accessibilityIdentifier] compare:imageIdentifier])
                    {
                        CGRect oldViewRect = CGRectMake(clue.center.x, clue.center.y-22, 44, 44);

                        [clue setAlpha:0.5];
                        clueFound = YES;
                        [clue setCenter:newCenter];

                        UIImageView *newimage = [[UIImageView alloc]initWithFrame:oldViewRect];
                        [newimage setImage:[[clue.subviews objectAtIndex:0] image]];
                        [newimage setAccessibilityIdentifier:imageIdentifier];
                        [self.view addSubview:newimage];

                    }
                }
            }
        }
    }
}

}

如果我注释掉上面的最后一行代码,那么其他视图会在模拟器中更改中心。如果我不对最后一行代码发表评论,那么他们就不会改变中心。在任何一种情况下,视图的alpha都会发生变化。我想添加视图,并更新中心。

1 个答案:

答案 0 :(得分:0)

我找到了一个有效的答案。上面的函数在另一个函数中被调用,并且中心被更新为在退出上述函数时丢失的局部变量。所以我通过将中心存储在字典中,并在该函数的调用函数中更新中心来解决它。