好吧,这就是我到目前为止所做的:
你可以在这里注意到我设法改变字体大小所以这很好,但我想要的风格还包括一个自定义字体。
请注意,实际样式会显示片刻,然后当状态栏更改为黑色字体时,自定义字体会丢失。
以下是我在applicationDidFinish
...
UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent
UINavigationBar.appearance().titleTextAttributes = [
NSFontAttributeName: UIFont(name: "<MyCustomFont>", size: 32)!,
NSForegroundColorAttributeName : UIColor.whiteColor(),
]
UINavigationBar.appearance().tintColor = UIColor.whiteColor()
UINavigationBar.appearance().opaque = true
UINavigationBar.appearance().barStyle = UIBarStyle.Black
UINavigationBar.appearance().barTintColor = UIColor.BlueColor()
UIBarButtonItem.appearance().tintColor = UIColor.whiteColor()
UIBarButtonItem.appearance().setTitleTextAttributes([
NSFontAttributeName: UIFont(name: "<MyCustomFont>", size: 18)!,
NSForegroundColorAttributeName : UIColor.whiteColor(),
], forState: UIControlState.Normal)
注意:
我有一个
EKEventEditViewController
的实例,并正确应用了样式。问题似乎是MailComposer的相关
答案 0 :(得分:3)
代码没有问题。当它适用于EKEventEditViewController
的实例时,这是完全合理的,并且它不适用于MFMailComposeViewController
的实例
如何进一步调查?
也许尝试在不同版本的iOS上运行。如果你的申请 支持iOS8或更低版本,试着看看它是否有效。那样你 可以确定它是否是iOS9特定的问题。
如果你有Xcode8测试版,你应该能够看到它是否在iOS10中得到修复。
iOS9上仍存在问题。在这种情况下,您需要在此处寻找替代方案。您可能已完全检查过UINavigationBar
API,我建议您先查看UINavigationItem
API。它会公开titleView
属性,让您了解它的外观。
var titleView: UIView?
如果此属性值为nil,则当接收者为顶部项目时,导航项的标题将显示在导航栏的中心。如果将此属性设置为自定义标题,则会显示该属性而不是标题。
自定义视图可以包含按钮。使用buttonWithType:方法 UIButton类以自定义视图的样式添加按钮 导航栏。自定义标题视图以导航栏为中心 并且可以调整大小以适应。
默认值为nil。
典型用例 -
self.navigationItem.titleView = myCustomTitleView
开启更多可能性。除了为UINavigationBar
我需要你验证这是否有效。我还没有尝试过。
希望它有所帮助。
答案 1 :(得分:0)
在旧文档中,这里明确指出您不得更改Apple提供的界面。
重要提示:邮件撰写界面本身不可自定义 并且不得被您的申请修改。另外,之后 提供界面,不允许您的申请 进一步更改电子邮件内容。用户仍然可以编辑 使用界面的内容,但忽略程序化更改。 因此,您必须在呈现之前设置内容字段的值 接口
答案 2 :(得分:0)
Apple的框架可能使用外观apis本身,你尝试过更具体的外观'选择器',例如:
UIBarButtonItem.appearanceWhenContainedInInstancesOfClasses([MFMailComposeViewController.self, UINavigationBar.self])
答案 3 :(得分:-1)
UIFont()
是一个可用的初始化程序,它可能由于多种原因而失败。
有些人说不要强制打开并单独初始化并检查是否成功:
`if let font = UIFont(name: "customFont.ttf", size: 21) {
UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName: font]
}`
您是否尝试过单独初始化?