- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
在 2011 年技术演讲中,我看到了一个关于新 UIAppearance
protocol 的演讲.那里还没有很多文档。我将简短地总结一下我记得的内容,以解释我的问题来自哪里:
关于UIAppearance
:
到目前为止,您必须在所有应用 View Controller 中自定义每个导航栏(工具栏等)属性。使用新的外观属性,您可以只在一个地方为应用程序中的所有导航栏执行此操作。例如:如果您想自定义导航栏背景图像,您可以这样做:
[[UINavigationBar appearance] setBackgroundImage:
[UIImage imageNamed:@"MyImageName"] forBarMetrics:UIBarMetricsDefault];
这将设置应用程序中所有导航栏的背景图像。使用 barMetrics
您可以指定是否要在横向模式下也使用图像。
如果您想指定仅在某些 View Controller 中应用的外观,文档中还有一种方法可以通过指定对象的位置来控制它:
[[UIBarButtonItem appearanceWhenContainedIn:
[ABPeoplePickerNavigationController class], nil] setTintColor:myNavBarColor];
另外值得一提的是,如果您有单个自定义实例,与您的外观设置不同,这些实例将不受外观代理的影响。
一些问题:
a) 我如何知道类的哪些属性与外观属性一起使用? 例如因为 UITableView
符合 UIAppearance 协议(protocol),所以我想我可以做类似的事情
[[UITableView appearance] setBackgroundColor:mytableViewColor];
来操纵我所有表格 View 的背景颜色,但我不能!
b) 是否有所有可使用外观属性操作的类的列表?
c) 在什么时候调用外观自定义? 我希望在运行时对外观属性进行更改,但不幸的是,这些更改没有发生。
最佳答案
a) How do I know which instances of a class work with the appearance property? For e.g. since UITableView conforms to the UIAppearance protocol I was thinking I could do something like
您查看类的标题(以及所有父类(super class)的标题)。 UI_APPEARANCE_SELECTOR
旁边的任何方法都支持与 UIAppearance
代理一起使用。
[[UITableView appearance] setBackgroundColor:mytableViewColor];
backgroundColor
属性未使用 UIView.h
中的 UI_APPEARANCE_SELECTOR
修饰。因此,它在技术上不支持与外观代理一起使用。它可能会起作用,但(鉴于缺乏方法修饰)不能保证。
来自UIAppearance 协议(protocol)引用
:
To support appearance customization, a class must conform to the
UIAppearanceContainer
protocol and relevant accessor methods must be marked withUI_APPEARANCE_SELECTOR
.
(注意“和相关的访问器方法必须标记...”[强调添加])
b) Is there a list of all properties that are manipulatable with the appearance property?
是否有一个页面显示每个使用外观代理的 setter ?我不知道,也没有办法在运行时构建列表。
c) At what point is the appearance customization being called? I was hoping to make changes threw the appearance property at runtime, but unfortunately the changes aren't taking place.
您可以在执行期间的任何时候使用外观代理。直到下次调用这些 View 的 -layoutSubviews
方法时,这些更改才会应用于受影响的 View 。
关于iphone - iOS 5 : Curious about UIAppearance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8257556/
我正在尝试更改我的应用程序的导航栏,但我无法弄清楚该代码的确切位置: [[UINavigationBar appearance] setTintColor:[UIColor colorWithPatt
我在通过 UIAppearance 自定义 UIToolbar 和 UISearchBar 方面时收到无法识别的选择器发送到实例错误。 奇怪的是,只在 6.1 或更低版本上崩溃,在 iOS7 上正常并
我正在使用新的 UIAppearance API,并通过我的 AppDelegate 成功地为所有 UINavigationBar 和 UIToolbar 实例设置了色调颜色,就像这样... - (v
我有一个 UIView 子类,我在我的应用程序(并且在第 3 方库中)中使用它来显示 toast 通知。我想为我正在开发的另一个应用程序稍微修改一下,所以我通过 UIAppearance 添加样式属性
我有一个在 titleBar 中带有 segmentedControl 的应用程序,它用于在 3 个导航 Controller 之间切换。我正在使用新的外观代理方法来设置此 segmentedCont
我有一个想法,我想尝试实现: 基本上,我希望能够轻松区分已登录和未登录我的应用程序。我的想法是,当用户未登录时,应用程序将在 UIAppearence 代理中设置背景颜色等。登录后,这些值将通过更改
我需要为我的应用程序中的所有单元格更改选定的单元格背景颜色。据我所知,有一种方法可以使用 UIAppearance为此目的的协议(protocol)。是否可以通过 UITableViewCell 的类
我正在创建一个自定义按钮,它有几个属性标记为 UI_APPEARANCE_SELECTOR .如何通过外观代理检测属性何时更改?不调用属性 setter 。 该属性确实发生了变化,因为它在 drawR
我注意到在 iOS5 中我们可以通过 UIAppearance 自定义 UIKit 控件,我开始使用它。 我想使用appearanceWhenContainedIn:在不同的类中自定义UINaviga
我正在尝试使用 UIAppearance() 在自定义类上应用样式 class MainStyleButton: UIButton {} 带有代码: let buttonView = MainStyl
我目前正在使用外观代理对象来自定义我的应用程序界面。 我想知道是否可以将自定义效果限制在特定 View Controller 内的元素。 换句话说,我可以使用 [UINavigatioBar appe
基本上,我在阅读有关 UIAppearance 的内容后重构应用程序。我的大部分 UI 更改都在 Storyboard或 viewDidLoad 中进行,自定义每个控件是一件很痛苦的事情。 我有一个单
出于某种原因,当我将背景图像应用到 UIBarButtonItem 时,它会使角变成尖锐的矩形。如何使用 UIAppearance 解决这个问题? // bar button id barB
更新 Matt 正确地指出我的原始项目在状态恢复方面存在错误。但是,即使在删除它之后,只要我在导航 Controller 中使用 TableView 并尝试设置 UINavigationBar 的 i
我想为我正在创建的应用程序添加主题。只需在 2 种颜色之间切换,我希望导航栏、工具栏等以所选颜色显示。 当应用首次加载时,我在 AppDelegate 的 didFinishLaunchingWith
请你解释一下,使用 UIAppearance 代理对象自定义我的 UIView 子类属性而不是创建 setter 方法来提供所需的属性有什么好处默认值类似于以下代码示例: @interface Cus
我的 Storyboard 中的标签通过 IBOutlet 连接到我的 View Controller 我已经如下扩展了 UILabel extension UILabel { func wi
有什么方法可以使用 UIAppearance 更改 UINavigationBar 内标签的高度。这是代码和正在发生的事情的图像,以便您了解问题所在。 [[UINavigationBar appear
我们为客户提供了一个静态库,允许他们显示我们的 View Controller 。我们使用 UIAppearance 来设置我们的 UIViewController 的样式。 但是,使用 UIAppe
来自 Apple 关于 UIAppearance 的文档: To customize the appearances for instances of a class contained within
我是一名优秀的程序员,十分优秀!