我可以使用外观代理来设置iOS中给定类型的所有控件的属性。例如,我可以这样说:如何在Cocoa Touch中创建等效的外观代理
UIFont *futura = [UIFont fontWithName:@"Futura" size:13];
NSDictionary *attributes = [NSDictionary dictionaryWithObject:futura forKey:UITextAttributeFont];
[[UIBarButtonItem appearance] setTitleTextAttributes:attributes forState:UIControlStateNormal];
使我所有的工具栏按钮都使用Futura字体。
我有我自己的自定义控件,UIControl的一个子类。有没有什么方法可以使用相同的技术来设置一些自定义属性对于我的控件是唯一的?否则,它直接遍历应用设置属性中的每个实例。问题是,我如何创建自己的属性代理,如外观代理?
我可以想象设置一个单例来保存我关心的属性,然后让我的控件调用它来获取它们的值。这似乎使我很难处理这种情况,我想将某些实例的属性设置为与全局默认属性不同,因为我可以使用上面的一个或两个UIBarButtonItems。因此,然后变成一个地方,每个新的实例注册自己的代理,所以代理可以通知他们的设置,如果他们改变......但现在我想知道是否有更好的方法?这看起来很复杂。