首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >包含在多个类中时的iOS 6外观

包含在多个类中时的iOS 6外观
EN

Stack Overflow用户
提问于 2012-09-26 06:27:02
回答 1查看 8K关注 0票数 18

我在想要在iOS 6应用程序中自定义的某些UI元素上使用appearanceWhenContainedIn方法。我发现的问题是,如果我尝试提供多个容器类,我的定制都不会应用,如下所示:

// Works neither for toolbar nor navbar items
[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], [UIToolbar class], nil]

// Works fine (but only for navbar items, obviously)
[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil]

官方文档说,这个方法的参数可以是一个以nil结尾的多个类的列表,但在我的例子中,它永远不会以它应该的方式工作。我是不是漏掉了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-26 06:44:09

从文档中:

appearanceWhenContainedIn:

..。

给定包含层次结构中接收方的外观代理。

这实际上意味着以nil结尾的列表定义的不是UIBarButtonItem的容器类列表,而是从上到下的容器层次结构,因此

[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], [UIToolbar class], nil]

返回位于UINavigationBar内部的UIBarButtonItem的外观代理,而UINavigationBar又位于UIToolbar内部。

[[UIBarButtonItem appearanceWhenContainedIn:[UIToolbar class],[ViewController class], nil] setTintColor:[UIColor redColor]];

为ViewController类中任何UIBarButtonItems中的UIToolBar设置红色色调。

因此,要分别设置UINavigationBar和UIToolBar的外观,需要对+appearanceWhenContainedIn:方法进行两次单独的调用

票数 43
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12592025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档