你可能已经注意到,大多数(如果不是全部)系统应用程序都显示带有圆角的屏幕。我的意思是,设备屏幕的四个角看起来是圆角的。
然而,大多数第三方应用程序不是这样的(四个角是90度角),但我见过一些第三方应用程序也是这样的,比如Facebook Messenger。还有许多其他应用程序只在启动画面上出现这种效果,这可能只是对default.png图像文件的修改。
是否有一种属性可以实现这种效果?
[self.window.layer setCornerRadius:20.0];
[self.window.layer setMasksToBounds:YES];
self.window.layer.opaque = NO;
不要忘记:
#import <QuartzCore/QuartzCore.h>
这种方法更好,因为它在WINDOW上创建动画,而不是VIEW上。因此,您可以设计其余UI的90度角,它们将自动变成圆角。只需要调用一次就可以轻松完成。
如果层存在滞后情况,将其光栅化可能会提高性能:
[self.window.layer setShouldRasterize:YES];
[self.window.layer setRasterizationScale:[UIScreen mainScreen].scale];
以上操作将使动画/图形变化“像图片一样”,而不会使用户界面太重。性能将得到提升,并根据Retina或非Retina屏幕进行光栅化处理。(这是[UIScreen]调用,因为“.scale”返回2.0表示Retina,1.0表示非Retina。非常简单。
希望这有所帮助!如果有用,请打勾,我会再回来查看的! :)
以下代码可以将视图的角落变为圆角。您可以将其放在viewDidLoad中:
#import <QuartzCore/QuartzCore.h>
view.layer.cornerRadius = 7;
// Import QuartzCore.h at the top of the file
#import <QuartzCore/QuartzCore.h>
self.view.layer.backgroundColor = [UIColor orangeColor].CGColor;
self.view.layer.cornerRadius = 20.0;
self.view.layer.frame = CGRectInset(self.view.layer.frame, 20, 20);
看看CALayers教程入门。这将是一个很好的起点。
@PsycoDad:这个对@cocotouch的回答的补充修复了屏幕顶部的问题。
CGFloat statusBarHeight = [UIApplication sharedApplication].statusBarFrame.size.height;
CGRect screenBounds = [[UIScreen mainScreen] bounds];
self.window.layer.frame = self.window.layer.bounds =
CGRectMake(0,
statusBarHeight,
screenBounds.size.width,
screenBounds.size.height - statusBarHeight);
UIWindow
实例都应该以这种方式配置。我一直在使用UIWindow
实例来显示自定义绘制的警报,这些新窗口与主UIWindow
完全分离(四年晚评论,但仍然...可能对其他人有用)。 - Alejandro Iván