为整个应用程序应用圆角

iHu*_*ter 6 core-graphics calayer ios

如何在屏幕截图中看到应用于整个视图的圆角(请注意,导航栏和键盘角都是圆角的)?

我试过设置cornerRadius = 10masksToBounds = YES两个window.layerwindow.rootViewController.view.layer,但只有仰视图边角圆润得到,导航栏仍然停留平方米.

更新. 设置cornerRadius为a window.layer实际上也会将圆角添加到顶部,但这些角在状态栏下不可见,除非cornerRadius大于20.

例

iHu*_*ter 17

好的,我在Twitter上问过Twittelator Neue的开发者Andrew Stone,这是他的食谱,在Andrew的允许下发布:

我们打算写一本关于Neue编码技巧的书!我们在窗口上覆盖一个包含四个角落的图像

我们还有一个自定义导航栏,其顶部呈圆形,可伸缩

所以这就是我在自己的项目中做到的方式:

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];
Run Code Online (Sandbox Code Playgroud)

overlay.png 是一个带黑角的透明全屏图像.