Как сделать закругленные углы на экране приложения?

как некоторые из вас, возможно, заметили, большинство (если не все) системных приложений показывают экран с закругленными углами. Я имею в виду, что четыре угла экрана устройства выглядят закругленными.

однако большинство сторонних приложений этого не делают (углы 90º), но я видел некоторые из них, как Facebook messenger. Многие другие имеют этот эффект, но только на заставке (которая может быть только модификация по умолчанию.файл изображения png)

есть ли свойство для достижения этого эффект?

4 ответов


Если вы хотите закругленные углы по всему приложению, и не должны явно воссоздавать их с каждым другим контроллером представления, который вы хотите, вызовите его в AppDelegate: (метод didFinishLaunching)

[self.window.layer setCornerRadius:20.0];
[self.window.layer setMasksToBounds:YES];
self.window.layer.opaque = NO;

не забывайте:

#import <QuartzCore/QuartzCore.h>

этот способ лучше, потому что он создает анимацию на окне, а не вид. Таким образом, вы можете создать остальную часть пользовательского интерфейса с 90 углами, и они будут автоматически округлены. Гораздо проще назвать это однажды.

также может быть лучше для производительности растеризировать слой, особенно если он отстает:

[self.window.layer setShouldRasterize:YES];
[self.window.layer setRasterizationScale:[UIScreen mainScreen].scale];

вышеуказанное заставит анимацию / графическое изменение "действовать как изображение", не делая пользовательский интерфейс слишком тяжелым. Представление улучшит, и растеризует согласно сетчатке или экранам не-сетчатки. (Это вызов [UIScreen], как".шкала" возвращает 2.0 для сетчатки, и 1.0 для не-Retina. Очень, очень просто.

надеюсь, что это помогло! Тик-так, и я вернусь. и Смотри! :)


Following будет вокруг углов представления. Вы можете поместить его в 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);