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.
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.
They're probably using a background image on the navigation bar that includes the rounded corners.
iHunter's answer works great for me except when I try to use the TWTweetComposeViewController
, that shows the keyboard but not the tweet view. Then I should to make the overlay as a property in the AppDelegate.h
and before tweetView
, remove the overlay. At tweet done, turn add overlay again.
AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
[delegate.overlay removeFromSuperlayer];
TWTweetComposeViewController *tweetSheet = [[TWTweetComposeViewController alloc] init];
tweetSheet.completionHandler = ^(TWTweetComposeViewControllerResult result) {
AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
[delegate.window.layer addSublayer:delegate.overlay];
};
[self presentModalViewController:tweetSheet animated:YES];
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With