В моем приложении для iPhone мне нужно показать большое количество (макс. 150) маленьких точек размером 10x10 пикселей, которые перемещаются по экрану индивидуально. Им не нужно двигаться плавно никоим образом, но их нужно обновлять каждую секунду или около того. В настоящее время у меня это реализовано как единственный CALayer, который я перерисовываю каждую секунду.Эффективность CALayer и сколько лимит
Но я понимаю, что CALayers очень эффективны, потому что они сопоставлены с оборудованием GPU. Поэтому я задавался вопросом, было бы более эффективным (с точки зрения использования батареи) создавать отдельный CALayer для каждой точки и перемещать его, задавая свои свойства позиции.
Так что мне интересно, есть ли у вас опыт в этом. CPU будет меньше, но GPU больше. Сколько CALayers все еще может обрабатываться оборудованием GPU?
Если я сделаю их отдельными CALayers, я мог бы также легко анимировать их, что выглядело бы намного лучше. Будет ли это намного более энергоемким?
Что еще хуже в моем случае, так это то, что я в настоящее время использую для них CATiledLayer с максимум 4-мя плитами, которые выставлены. Это также означает, что мне нужно перерисовать их 4 раза каждое обновление.
Спасибо за ваш ответ @Semix. Я удивлен, что у вас хуже производительность с CALayer, чем с UIView, учитывая, что UIView поддерживаются CALayers. Правильно ли вы устанавливаете образ CALayer, а затем анимируете его положение? Вы использовали собственную анимацию CALayer или задали ее положение в каждом кадре? – fishinear