Search code examples
ioscore-graphicscalayer

Applying rounded corners for the whole application


How can I implement rounded corners applied to the whole view as seen on screenshot (note that both navigation bar and keyboard corners are rounded)?

I've tried setting cornerRadius = 10 and masksToBounds = YES for both window.layer and window.rootViewController.view.layer, but only the bottom view corners are getting rounded, the navigation bar still stays square.

Update. Setting cornerRadius to a window.layer actually adds rounded corners to the top too, but those corners are not visible under the status bar unless cornerRadius is greater then 20.

Example


Solution

  • Ok, I've asked Andrew Stone, a developer of Twittelator Neue, on Twitter, and here's his recipe, published with Andrew's permission:

    We're going to write a book on coding tricks in Neue! We overlay a window w an image containing 4 corners over everything

    We also have a custom nav bar with a stretchable image w/ tops rounded

    So here's how I did it in my own project:

    UIImage *overlayImg = [UIImage imageNamed:@"overlay.png"];
    CALayer *overlay = [CALayer layer];
    overlay.frame = CGRectMake(0, 0, overlayImg.size.width, overlayImg.size.height);
    overlay.contents = (id)overlayImg.CGImage;
    overlay.zPosition = 1;
    [self.window.layer addSublayer:overlay];
    

    overlay.png is a transparent fullscreen image with black corners.