动态改变质量UITableView背景,但如何?
我有很多的UITableViewControllers
,我想有自定义背景色,而我不希望将它复制到所有TVC:动态改变质量UITableView背景,但如何?
self.tableView.backgroundColor = [UIColor clearColor];
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"backgroundPattern.png"]];
任何想法,请?
你可以用你自己的类子类化UITableViewController,改变这个类的backgroundcolor并从这个类派生UITableViewControllers。
看看UIAppearance
协议。您可以指定表视图的背景色中所含特定视图控制器类全局或当:
UITableView *appearance = [UITableView appearanceWhenContainedIn:[MyTableViewController Class], [MyOtherTableViewController class], nil];
appearance.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"backgroundPattern.png"]];
你可以把这个在您的应用程序委托的application:didFinishLaunchingWithOptions:
方法。
此外,view
和tableView
属性UITableViewController
指向相同的东西,所以你不需要同时设置。
编辑
尝试看标题Customizing the Appearance of UIKit Controls 2012年的WWDC视频。他们演示UIAppearance
协议以及您可能会觉得有用的主题设计模式。
我有超过十个TableViewController和一些带Tableviews的UIViewControllers。而且还会有更多,我不认为这是解决这个问题的最好和最有活力的方式。 – Laszlo
你所描述的问题正是外观协议的目标,所以我不明白你的反对意见。例如,如果所有的表格都具有相同的背景颜色,则需要一行代码。它不是静态的,所以我没有得到“动态”的评论。看看'UIAppearance'协议文档,也许它会变得更加清晰。 –
在我的答案中添加了WWDC视频链接。看一看。 –
我试过了,但没有变化。我把代码放入init方法“//自定义初始化”,并在viewdidload中尝试,我也搜索了几次,但没有运气。 – Laszlo
最后但并非最不重要的子类现在完美。 – Laszlo