I'm a beginner with iOS app development and want to customize the Status Bar colour. I have set my scene to a dark background and I want to battery and time in the Status Bar to match the colour.
At the moment I have added
var navigationBarAppearace = UINavigationBar.appearance()
UIApplication.shared.statusBarStyle = .lightContent
in AppDelegate.swift
Is there a way to add a custom hex colour for the text, not background?
I'm afraid there isn't without accessing private API's, which will get your app declined from apple review.
It's best to just find a way to make your app design work with the given, white or black status bar style.
The one thing you could do is create your own status bar that imitated the UIStatusBar, with your own labels and icons, but that would be a reasonable amount of hassle.
Related
I tried making the small icon exactly 16x16, gray-scaled, nothing but gray and white (the gray color being hex value 616161), to create a silhouette of my application icon.
Yet no matter what it just shows up as a white/gray square in the notifications. What am I doing wrong?
(My min api is 21, assuming it is relevant)
Follow this link
First let’s understand the Android documentation which is as follows
“Update or remove assets that involve color. The system ignores all
non-alpha channels in action icons and in the main notification icon.
You should assume that these icons will be alpha-only. The system
draws notification icons in white and action icons in dark gray.”
Now this is easy to miss and I have seen many apps that are live in the app store with thousands of users who haven’t followed the mentioned guidelines.
So let me explain in detail how you can convert your notification icon to an Android friendly one with a few clicks.
In your favourite image editor open up your icon file. Convert all parts of the image that you don’t want to show to transparent pixels. All colors and non transparent pixels are displayed in white. Let us go through an example.
EDITED: Thanks #Andrey Patseiko for the tool
For notification you have to use different icons for different versions of android:
Notification notification = new Notification.Builder(context)
.setAutoCancel(true)
.setContentTitle("My notification")
.setContentText("Look, white in Lollipop, else color!")
.setSmallIcon(getNotificationIcon())
.build();
return notification;
Get notification icon on the basis of version
private int getNotificationIcon() {
boolean useWhiteIcon = (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP);
return useWhiteIcon ? R.drawable.icon_silhouette : R.drawable.ic_launcher;
}
Along with new features and capabilities, Android 5.0 includes a variety of system changes and API behavior changes. See the notification behavior changes.
Notifications are drawn with dark text atop white (or very light)
backgrounds to match the new material design widgets. Make sure that
all your notifications look right with the new color scheme. If your
notifications look wrong, fix them:
Use setColor() to set an accent color in a circle behind your icon image.
Update or remove assets that involve color. The system ignores all non-alpha channels in action icons and in the main notification icon.
You should assume that these icons will be alpha-only. The system
draws notification icons in white and action icons in dark gray.
So, basically you have to use silhouette icons as notification icon for API Level 21+
I've received a screenshot from my app by an older lady who seems to have activated "Bold text" in her iPhone settings.
Since I've never really looked at that before and my app does not support dynamic text (which seems to not be related) I was surprised to see that in this mode the tint colors I gave my bar button items are being ignored and they'll always show in standard iOS Nav bar button blue, this line of code does not have an effect anymore:
myBarButtonItem.tintColor = myColor
In my case the color indicates their state so that's a dealbreaker.
I know that I could detect whether the user has activated this setting (as indicated in the answer here Possible to detect Bold Text setting in Settings > Accessibility? ) and indicate the state by using different icons...
But is there any way around this and keep my tint colors in bold text mode?
Try with appearance
UIBarButtonItem.appearance().tintColor = yourcolor
I noticed that the iOS app, Things, has a status bar with grey content (not black, or white) in their iPhone app. I noticed this on an iPhone X. I was under the impression that you could only have a status bar with black or white content by setting the status bar style.
See the attached screenshot for an example.
How would they have achieved this in their app?
Edit: I do not mean the background color of the status bar, I mean the actual color of the text and icons in the status bar.
Ok, after some more digging I found this comment on StackOverflow.
It does exactly what I was looking for. Looks like it uses some sort of Private API, so probably not the wisest thing to implement in a real app.
Specifically the code that worked for me is found below. Put this code in application(_:didFinishLaunchingWithOptions:) inside your AppDelegate.
Swift 4
if application.responds(to: Selector(("statusBar"))),
let statusBar = application.value(forKey: "statusBar") as? UIView,
statusBar.responds(to: #selector(getter: CATextLayer.foregroundColor)) {
statusBar.setValue(UIColor.gray, forKey: "foregroundColor")
}
After some search i couldn't find information on how to change notification button background colors. Is this possible to do with Swift in iOS?
Thanks :)
The only thing you can do is to set it to red color. You can achieve it if you set actionButton.destructive equal to true
Is it possible to change the background color of the top bar in iOS 6 with AIR for Mobile or can this only be done in native Objective-C?
What I mean:
http://shurl.be/uLwt
I've found a simple and easy solution for this.
Default the status bar style (UIStatusBarStyle) is set to UIStatusBarStyleBlackOpaque.
Just change the value to UIStatusBarStyleBlackTranslucent and set the background color of the SWF to the color you want the status bar to have.
So what I've done is just this:
Added the settings below in the Application descriptor
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleBlackTranslucent</string>
And changed the SWF background color
[SWF(backgroundColor="#ff6a00")]
Result:
VS
The solution for this in objective-c:
You can change it from, Target Settings -> Summery -> tint of status bar
Or
you can change it back to black from, info.plist -> set value for status bar style as opaque black style.