2013-06-10 4 views
1

Я экспериментировал с чертежными картами. Я нарисовал карту Соединенных Штатов как серию UIBezierPath (один путь для каждого состояния - преобразовал SVG-файл с PaintCode). В то же время я работал с CAShapeLayer и был поражен тем, насколько быстро они были. Я решил преобразовать UIBezierPath в CAShapeLayer. Это оказалось очень медленным. Вид будет заикаться, даже когда я повернул устройство. Кто-нибудь знает, почему это было бы так медленно? Кажется, что всякий раз, когда я заполняю представление слишком большим количеством CAShapeLayer, он значительно замедляет приложение.Почему UIBezierPath быстрее, чем CAShapeLayer

Это не проблема, связанная с кодом. Мне просто интересно, есть ли ограничения на количество CALayer, которое вы можете использовать в приложении.

ответ

1

CAShapeLayer В основном используется для создания фигур, которые вы могли бы оживить. Поэтому, когда вы используете его, каждая модификация анимируется. Я не знаю UIBezierPath, но CAShapeLayer также использует сглаживание во время растеризации, и для этого потребуется экстраординарная рендеринг, что является дорогостоящей задачей.

0

закадровый рендеринга включает в себя shouldRasterize (光栅 化) маски (遮罩) тени (阴影) край сглаживанием (抗锯齿) группы Непрозрачность (不透明) так что если вы выключаете непрозрачные & тени и включить rasterise это будет быстрее. Вы почувствуете разницу. но все равно замедляет приложение.

Смежные вопросы