1

У меня есть UIAlertController со стилем ActionSheet. Есть 2 варианта. Когда пользователь выбирает кого-либо из них, он отображает Apple, встроенный в UIActivityViewController. Проблема, с которой я сталкиваюсь, заключается в том, что когда пользователь выбирает сообщение или почту и другие, кнопки навигационной панели темно-синие, а строка состояния черная. Я хочу, чтобы кнопки были белыми, а строка состояния была белой. Единственное, что работает правильно, это то, что цвет панели навигации синий, который я установил в делегате приложения.Пользовательский цвет для кнопки панели навигации и StatusBar для UIActivityViewController

код у меня есть в App Делегат:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 

    // Nav Bar 
    UINavigationBar.appearance().translucent = false 
    UINavigationBar.appearance().opaque = true 
    UINavigationBar.appearance().barTintColor = primaryBlueColor 
    UINavigationBar.appearance().tintColor = UIColor.whiteColor() 

    // Status Bar 
    UIApplication.sharedApplication().statusBarHidden = false 
    UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent 
} 

Когда я представляю UIActivityViewController, я могу настроить цвет кнопки «Отмена» для нестандартного синего цвета. Но опять же, когда пользователь нажимает сообщение или какие-либо другие параметры, он переходит на новый экран, а цвета неправильны. Это то, что у меня есть:

let activityController = UIActivityViewController(activityItems: [textFile], applicationActivities: nil) 

self.presentViewController(activityController, animated: true, completion: nil) 

activityController.view.tintColor = primaryBlueColor 

EDIT на вопрос 1:

Я только что нашел ответ на кнопки, чтобы изменить цвет белый. Теперь все, что отсутствует, - это строка состояния, которая станет белой. Это то, что я добавил к вышеприведенному методу делегирования приложений.

UIBarButtonItem.appearanceWhenContainedInInstancesOfClasses([UINavigationBar.classForCoder()]).tintColor = UIColor.whiteColor() 

Любые предложения для строки состояния?

ответ

1

В вашем AppDelegate, вы можете удалить:

UIApplication.sharedApplication().statusBarHidden = true 
    UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent` 

Затем добавьте следующий код в ViewController:

extension UINavigationController { 

    public override func preferredStatusBarStyle() -> UIStatusBarStyle { 
     return .LightContent 
    } 

    public override func childViewControllerForStatusBarStyle() -> UIViewController? { 
     return nil 
    } 
} 

Наконец, перейдите в ваш Info.plist и установить:

View controller-based status bar appearance = YES

+0

Он работает! Спасибо. Кажется, что проблема с цветами кнопок. Если я нажму «Сообщение», кнопки будут белыми. Но если я нажму Почта, на новом экране появятся синие кнопки. Любая идея почему? – Tyler

+0

Попробуйте очистить и перестроить. Кроме того, для меня кнопка «Отправить» в Mail была неактивна, пока я не набрал адрес получателя. Или проблема, с которой вы сталкиваетесь? – ZGski

+0

Я пробовал очистить и перестроить, и все равно ничего. Кнопка «Отмена» и «Отправить» является синей. Даже когда я набираю текст, кнопка «Отправить» синяя. Что касается Послания, это прекрасно. Не уверен, что это отдельная проблема. Любая идея почему? У вас была эта проблема? – Tyler

0

Чтобы изменить строку состояния на белый, в стрижа, перейдите к info.plist и нажмите + и изменить его следующим образом:

enter image description here

Затем добавьте эту строку в AppDelegate.swift:

// Changing the status bar's colour to white 
UIApplication.sharedApplication().statusBarStyle = .LightContent 
+0

К сожалению, забыл добавить этот код в моем вопросе. У меня уже было это. Я редактировал мой вопрос выше. Таким образом, этот код работает для каждого экрана, за исключением случаев, когда я нажимаю UIActivityViewController, а затем выбираю вариант, например Message and Mail. Строка состояния отображается как белая и на 1 секунду позже становится черной. Какие-либо предложения? – Tyler

Смежные вопросы