好吧,所以我真的不知道 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?
最佳答案
如今,您在 Interface Builder 中添加的按钮的首选机制是 IBOutletCollection
:
@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *buttons;
显然,在 Interface Builder 中,您可以将各个按钮连接到 socket 集合。有关 IBOutletCollection
的讨论,请参阅 NSHipster 的 IBAction / IBOutlet / IBOutletCollection文章。
如果您不使用 Interface Builder,而是以编程方式创建这些按钮,您可以只使用 NSArray
:
@property (strong, nonatomic) NSArray *buttons;
然后您自己填充:
self.buttons = @[self.button1, self.button2, self.button3, self.button4, self.button5, self.button6];
无论您如何构建此数组( socket 集合或手动填充),您都可以在更新按钮的属性时迭代该数组:
for (UIButton *button in self.buttons) {
button.alpha = 1;
}
或者,更简单,您可以使用 setValue:forKey:
更新所有这些:
[self.buttons setValue:@1 forKey:@"alpha"];
关于iOS:一次设置多个按钮的透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31729369/