iOS:一次设置多个按钮的alphas

时间:2015-07-30 16:34:14

标签: ios objective-c xcode animation nsdictionary

好的,所以我真的不知道NSDictionary是否是正确的方法,但是我使用淡入淡出动画来在屏幕上和屏幕上显示不同的按钮组。我想把它们“划分”成不同的组,这样我就可以用一两行来完成,而不必每次都重写所有的按钮名称(有很多数量)。关于如何做到这一点的任何想法?

[UIView animateWithDuration: 1.5
        animations: ^(void)
        {
            //As an example i just called them button1, button2, etc.
            self.button1.alpha = 1;
            self.button2.alpha = 1;
            self.button3.alpha = 1;
            self.button4.alpha = 1;
            self.button5.alpha = 1;
        }
 ];

我将以上内容作为我要问的一个例子。有没有办法将所有按钮放在NSDictionary中并写一行(按钮当前所在的位置)改变所有的alpha?

2 个答案:

答案 0 :(得分:5)

现在,您在Interface Builder中添加的按钮的首选机制是IBOutletCollection

@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *buttons;

demonstrate hooking up outlet collection

显然,在Interface Builder中,您可以将各个按钮连接到插座集合。有关IBOutletCollection的讨论,请参阅NSHipster的IBAction / IBOutlet / IBOutlet​Collection文章。

如果您没有使用Interface Builder,而是以编程方式创建了这些按钮,那么您可以拥有NSArray

@property (strong, nonatomic) NSArray *buttons;

然后你自己填充:

self.buttons = @[self.button1, self.button2, self.button3, self.button4, self.button5, self.button6];

无论您如何构建此阵列(插座集合或手动填充),您都可以在更新按钮的属性时迭代该数组:

for (UIButton *button in self.buttons) {
    button.alpha = 1;
}

或者,甚至更简单,您可以使用setValue:forKey:更新所有内容:

[self.buttons setValue:@1 forKey:@"alpha"];

答案 1 :(得分:1)

您可以使用按钮标记来完成此操作。为多个按钮(您的组)设置相同的标签并执行:

button.tag = 1;

然后:

for (UIButton *btn in button) {
    if(btn.tag == 1)
    {
        // do something
        break; // don't need to run the rest of the loop
    }
}