Я экспериментировал с рисунком iOS. Чтобы сделать практическое упражнение, я написал компонент BarChart. Ниже приведена диаграмма классов (ну, я не мог загружать изображения), поэтому позвольте мне написать ее словами. У меня есть NGBarChartView, который наследует UIView, имеет 2 протокола NGBarChartViewDataSource и NGBarChartViewDelegate. И код находится в https://github.com/mraghuram/NELGPieChart/blob/master/NELGPieChart/NGBarChartView.m
Чтобы нарисовать barChart, я создал каждый barChart как другой CAShapeLayer. Причина, по которой я делал это, - это два раза, сначала я мог просто создать UIBezierPath и прикрепить это к объекту CAShapeLayer и двум, я могу легко отслеживать, касается ли barItem или нет, используя метод [Layer hitTest]. Компонент работает очень хорошо. Однако мне не нравится подход, который я использовал для рисования barCharts. Отсюда и эта записка. Мне нужно мнение экспертов о следующих
- Используя CAShapeLayer и создавая BarItems, я действительно не используя UIGraphicsContext, это хороший дизайн?
- Мой подход создаст несколько CALayers внутри UIView. Есть ли ограничение, основанное на производительности, на количество CALayers, которое вы можете создать в UIView.
- Если хорошей альтернативой является использование методов CGContext *, то что правильный способ определить, был ли затронут конкретный путь
- С точки зрения анимации, например, когда мигает символ, когда вы нажмите на нее, лучше дизайн слоя или дизайн CGContext лучше.
Помощь очень ценится. Кстати, вы можете смотреть мой код и комментировать. Я с радостью принимаю любые предложения по улучшению.
Бест, Murali