0

我想同时对 10 个 UI 对象(其中大部分是 UIImageView)应用同样的效果。这是动画:

[UIView animateWithDuration:0.7f
                 animations:^{

woodenBackground1.frame = CGRectMake(self.woodenBackground1.frame.origin.x - 900,self.woodenBackground1.frame.origin.y, self.woodenBackground1.frame.size.width, self.woodenBackground1.frame.size.height);

woodenBackground.frame = CGRectMake(self.woodenBackground1.frame.origin.x - 900,self.woodenBackground2.frame.origin.y, self.woodenBackground1.frame.size.width, self.woodenBackground2.frame.size.height);

......

有没有办法做到这一点?我怎样才能为那么多对象重复它而不是重复代码本身?

4

3 回答 3

1

您可以将所有视图放在容器 UIView 中,如果它们都移动相同的量,则将动画应用于容器视图。

于 2013-05-13T15:47:59.333 回答
1

一个想法是将所有视图放在一个数组中。然后为 NSArray 创建一个类别,在其中定义一个名为 makeObjectsPerformSelector: withStruct 的方法:

这将允许您像下面一样在一行中执行它。

[viewArray makeObjectsPerformSelector:@selector(setFrame:) withStruct:CGRectMake(self.view.frame.origin.x - 900,self.view.frame.origin.y, self.view.frame.size.width, self.view.frame.size.height)];
于 2013-05-13T15:57:56.013 回答
1

取一个视图并在该视图中添加所有 10 个对象。无论何时要更改框架,都可以使用此代码。

for(UIView *view in someview)
    {
        view.frame = CGRectMake(self.view.frame.origin.x - 900,self.view.frame.origin.y, self.view.frame.size.width, self.view.frame.size.height);

    }

如果所有都存在于 self.view 中,则为对象提供标签值,并根据该标签值更改框架

于 2013-05-13T15:54:05.247 回答