Problem
My app appears to be laid out correctly, but I cannot achieve the blurry translucent effect that iOS 7 is famous for. Mine appears opaque.
Desired Effect
I'm trying to get a more obvious blur effect such as Apple's Trailers app:
Translucency
In my subclass of UINavigationController, I make the navigation bar translucent:
- (id)initWithRootViewController:(UIViewController *)rootViewController
{
if (self = [super initWithRootViewController:rootViewController]) {
self.navigationBar.translucent = YES;
}
return self;
}
Tint Color
In my subclass of UIApplicationDelegate, I set the tint color of the navigation bar. I discovered that the alpha of the tint color makes no difference. That is, using an alpha of 0.1 would not cause the bar to become more translucent.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[UINavigationBar appearance] setTintColor:[UIColor greenColor]];
}
Edges
In my content view controller, I set the edge to UIRectEdgeNone
so the top doesn't get chopped off by the navigation bar. If I were to use the default UIRectEdgeAll
, the navigation bar would permanently cover the top of my content. Even if I were to live with this abnormality, UIRectEdgeAll
still does not enable the translucency effect.
- (void) viewDidLoad
{
[super viewDidLoad];
self.edgesForExtendedLayout = UIRectEdgeNone;
}
Edit: Experimenting with Edges
Ad pointed out by @rmaddy in the comments, the problem may be with the edgesForExtendedLayout. I found a comprehensive tutorial edgesForExtendedLayout and attempted to implement it:
- (void) viewDidLoad
{
[super viewDidLoad];
self.edgesForExtendedLayout = UIRectEdgeAll;
self.automaticallyAdjustsScrollViewInsets = YES;
self.extendedLayoutIncludesOpaqueBars = NO;
}
It did not work. Firstly, there was no translucency effect. Secondly, the top of my content was chopped off. On the following example page with the above code, the avatar was initially covered by the navigation bar and it was very hard to scroll to. You could pull down to see the top of the avatar, but when you let go, the page would automatically bounce back up and the avatar would be obscured again.
UIRectEdgeNone
. That defeats the effect. The effect only appears if the view controller goes under the navbar. – rmaddyUIRectEdgeAll
makes the top and bottom portion of the content view stuck under the navigation and tab bars, as I learned from this thread. I've tried the defaultUIRectEdgeAll
and it makes no difference in the special effects. – Pwner