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

Kil*_*ley 2 xcode animation objective-c nsdictionary ios

好的,所以我真的不知道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;
        }
 ];
Run Code Online (Sandbox Code Playgroud)

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

Rob*_*Rob 5

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

@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *buttons;
Run Code Online (Sandbox Code Playgroud)

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

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

@property (strong, nonatomic) NSArray *buttons;
Run Code Online (Sandbox Code Playgroud)

然后你自己填充:

self.buttons = @[self.button1, self.button2, self.button3, self.button4, self.button5, self.button6];
Run Code Online (Sandbox Code Playgroud)

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

for (UIButton *button in self.buttons) {
    button.alpha = 1;
}
Run Code Online (Sandbox Code Playgroud)

或者,甚至更简单,您可以使用以下命令更新所有这些setValue:forKey::

[self.buttons setValue:@1 forKey:@"alpha"];
Run Code Online (Sandbox Code Playgroud)