2011-12-26 2 views
7

В настоящее время я работаю над переписыванием настроек (работает внутри самого SpringBoard), и поэтому (из-за) гладкость, скорость и эффективность являются одними из самых важных вещей для меня, так как даже малейшая часть ненужного отставания отнимет от UX.Лучший и быстрый способ округления углов UIView?

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

Очевидные одно:

view.layer.cornerRadius = value; 
view.layer.masksToBounds = YES; 

Однако я слышал, что установив CALayer маски с layer.mask быстрее? И если это так, то какой из этих двух решений лучше всего ?: https://stackoverflow.com/a/4930166/458205

Этот код использует маскировку, однако слой mask также использует cornerRadius, так ли это на самом деле быстрее?

CALayer *maskLayer = [CALayer layer]; 
maskLayer.cornerRadius = radius; 
// set the mask 
self.view.layer.mask = maskLayer; 

Или Решение 1, приведенной выше ссылке, или this answer быть более эффективна?

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

+0

Его просто сходит с моей головы, но разве вы не могли бы просто подкласс UIView? – Ravi

+1

@ Ravi да какой способ я тогда использовал бы в подклассе? Это мой вопрос. –

ответ

1

Первый фрагмент более эффективен, потому что закругленный угол является маской сам по себе. для увеличения производительности закругленных углов: view.layer.shoudRasterize = YES;

+0

Пробовал это, но он не увеличивает производительность, он просто делает вид не-HD – JomanJi

+0

JomanJi вам нужно установить свойство 'rasterizationScale' CALayer. –

3

Вам необходимо установить растеризацию, а также view.layer.shouldRasterize.

я обычно это сделать:

view.layer.shouldRasterize = YES; 
view.layer.rasterizationScale = [[UIScreen mainScreen] scale]; 

Если вы не установите rasterizationScale он всегда будет по умолчанию в масштабе 1 (не-сетчатки в данном случае) для растеризации.

Для меня это обычно ставит мои характеристики прокрутки наравне с UITableView.