2013-05-13 43 views
0

我想同时将这个相同的效果应用于10个UIobjects(大多数是UIImageViews)。这是动画:用相同的代码更改许多UIObject的框架

[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); 

.....

有没有办法做到这一点?我如何重复它的许多对象,而不是重复代码本身?

+0

这些代码行是不一样的。仅仅因为他们“看起来”相同并不意味着有办法优化他们的写作。也许你应该看看你的观点如何布置(如果他们真的在做同样的事情,他们为什么都是单独的观点?)。如果他们不是,那么有时你必须接受,你将不得不编写10行类似的代码。试图变得聪明只会伤害未来的可维护性。 – 2013-05-13 15:47:25

回答

1

你可以把所有的容器内的UIView的意见和动画应用到容器看法,如果他们都在移动相同的量。

1

拿一个视图,并添加所有的10个对象view.whenever你想改变你的帧可以使用此代码。

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然后给标签值的对象,并基于该标记值可以改变帧

1

一个想法是放置在阵列中的所有的意见。 withStruct:

这将允许你在一个行类似下面的所有执行它。然后,你定义了一个名为makeObjectsPerformSelector方法创建一个NSArray的一个类别。

[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)]; 
相关问题