Как сделать закругленные углы на экране приложения? - PullRequest
9 голосов
/ 02 марта 2012

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

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

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

Ответы [ 4 ]

16 голосов
/ 04 марта 2012

Если вы хотите, чтобы закругленные углы были над приложением ENTIRE, и вам не нужно явно воссоздавать их с каждым другим желаемым View Controller, вызовите его в 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];

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

Надеюсь, это помогло! Отметьте, если так, и я вернусьи смотри! :)

1 голос
/ 02 марта 2012
// 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 Tutorial . Вы получите хороший старт.

1 голос
/ 02 марта 2012

Ниже будут закруглены углы обзора.Вы можете поместить его в viewDidLoad:

#import <QuartzCore/QuartzCore.h>

view.layer.cornerRadius = 7;
0 голосов
/ 01 июня 2013

@ 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);
...