I have an app that runs on IOS 7 and 8. On 8 I use UIBlurEffect with UIBlurEffectStyleLight which creates a beautiful vibrant blur. On IOS 7 I use IOS Blur library which seems very similar to UIBlurEffectStyleExtraLight in IOS 8. This creates a more fuzzy / white looking blur effect. Is there any way to make the IOS Blur (which is essentially just a UItoolbar overlay) on IOS 7, look more like UIBlurEffectStyleLight on IOS 8?
Thanks!
EDIT I was able to get an identical image by using Apple's UIImage+ImageEffects category and using applyLightEffect.
#import "UIImage+ImageEffects.h"
self.menu.image = [self.menu.image applyLightEffect];
Leaving this question open for now in case there are solutions that work for real time as well.
UINavigationBar was the best real-time blur solution available in iOS7, but it has its limitations (and from an architecture point of view is a pretty horrible roundabout way to just get a blurred background on your view). There are ways to create blur images using the Accelerate framework in iOS7, but you're not going to get real-time performance out of it, so if you're planning to blur something that is moving or changing, you're stuck with UINavigationBar.
You can change the tint of the UINavigationBar to make it not be so white, but you can't set it to a clear tint to get a more accurate pixel colour blur -- it's always going to be tinted with either white or black first before applying your tint colour.
Related
I have a blue logo on the launchscreen.storyboard on white background.
For the new DarkMode introduced with iOS 13 I like to invert the colors, i.e. blue background and white logo.
As we know this can be done using named colors from the asset catalogues, which change depending on the traits of the device.
This is working totally fine in iOS 11 and up but shows this error when trying to support iOS 10:
Named colors do not work prior to iOS 11.0.
I tried making a view controller for the launchscreen scene in code and set the colors there using the #ifavailable clause, but the compiler says a launchscreen may not have a custom class associated with it.
I also thought of using different launchscreen storyboards depending on the iOS version but I couldn't find anything about how to.
Anything I can do about it?
How to solve this problem?
Thanks,
Felix
As suggested here, the solution is to use a dynamic image for the background instead:
Create 2 images with the flat colors for light and dark mode.
Import them in your Asset Catalog and define the “Any”/“Dark” appearances.
Add a UIImageView in the background of your Launch Screen with this image (“Scale to Fill”, constrained to container).
This will compile even if your deployment target is lower than iOS 11.0, and will display the appropriate color at launch.
Can I somehow make UINavigationBar looks like iOS 6 UINavigationBar in iOS 7 and iOS 8 (with blue background color, etc)?
Thanks in advance.
I'm ashamed to admit it but we did a similar thing for one of our Apps as the client was not willing to do a redesign.
You will need your designer to get you the blue tinted navigation bar as an image that you can set as the navigation bars background. As for the back buttons and other items you will need all the resources as well to be able to replicate those.
So if you are looking to change it in code this is unfortunately not possible.
Starting with the iPhone 4S UIToolbar blurs the background. However the user can manually disable blurring in the Settings under General > Accessibility > Increase Contrast > Reduce Transparency.
Can I programmatically find out if the iPhone actually does use blurring?
The reason is I'd like to adjust the background and barTintColor in case of blurring being disabled or unavailable.
Related, for the "Darken Colors" setting I found a hack to detect it. I'm looking for something similar for the blurring as I'm not aware of a public API for this.
It's possible to check user's Reduce Transparency setting under iOS 8 with: UIAccessibilityIsReduceTransparencyEnabled().
As for the devices running iOS 7, blur isn't supported on iPhone 4, iPad 2 and 3 (I'm not 100% sure about iPad 2).
I have been trying to solve this app icon color issue all morning. I am still experiencing this after going through both of these highly recommended photoshop/iOS design articles:
http://davidmckinney.com/blog/2013/12/31/designing-iphone-apps-how-to-setup-photoshop
http://bjango.com/articles/photoshop/
Here is the problem that I am having:
When creating my app's icon, the color that I see in Photoshop is the exact same color that I see in xcode's asset catalog. It is also perfect when I run the app on the iOS simulator.
However, when I run my app on my iPhone the app icon's color is always darker.
What's weird, is if I take a screenshot of my iPhone's screen and email it to myself, the color is correct! So for some reason the color is only darker when you are actually looking at the iPhone's screen.
Pardon my ignorance, but this is the first design I have ever done for an iOS app and I don't understand why this is happening or how to fix it.
EDIT: I am now using LiveView after reading this answer: https://stackoverflow.com/a/3597221/3344977
What's funny is no matter how hard I try I cannot get the color I see on my screen to appear on my iPhone screen. It's as if this shade of Pink I'm trying to use just isn't possible to render on an iPhone display.
This is because your iPhone and Monitor screens have different color calibrations (if that's the right term)
You're going to want to setup a color profile on your computer that matches the iPhone screens as closely as possible, and use that when developing icons.
for some reason the color is only darker when you are actually looking at the iPhone's screen
Consider turning up the brightness on your iPhone. Go to Settings->Wallpapers & Brightness to adjust it.
In any case, the issue isn't that the value of the color is changing on your device, it's just that that color value is being rendered differently.
Its because the resolution of your screen is different than your iOS device try it on other device
I am designing a custom button with that requires me to overlay a UIButton on top of a UIImageView. The UIImageView uses a [UIImage stretchableImageWithLeftCapWidth:topCapHeight:] image and the UIButton has a background color with a pattern image [UIColor colorWithPatternImage:[UIImage imageNamed:#"buttonPattern.png"]]
The problem I am facing is that on iPhone 4, the images from the UIButton and the UIImageView appear to have slightly different colors although they should match. Testing the same thing on an iPhone 3GS shows normal results without the color difference.
This image shows the difference:
as you can see it looks fine on the 3GS. On the retina display you can clearly see the difference in color. I even tried using the low res images (from the 3GS) on the retina display, the colors were still showing differently. is this a bug in retina display devices? has anyone faced this issue before?
Make sure none of your image files has an embedded color profile. This can be tricky. For Adobe software, this page is helpful:
http://bjango.com/articles/photoshop/