Я работаю над различными IOS приложений и мне нужно интерфейс со следующими возможностями:эффективный способ привлечь много форм на UIScrollView, прокручивать и масштабируемой
У меня есть Scrollview (охватывающий большую часть экрана), который прокручивается в обоих направлениях
Этот прокручиваемый вид содержит много прямоугольников. Эти прямоугольники неразрешимы. Пользователь может изменять их, перемещать, создавать и удалять. Поэтому в идеале они будут все CALayers или UIViews.
Проблема заключается в том, что могут отображаться только 100 или 1000 из них, CALayers или UIViews могут быть не очень эффективными.
Прокрутка может быть в 10-20 раз больше, чем размер экрана. И полностью покрыты этими формами. Поэтому, когда пользователь прокручивает, он не должен видеть никаких мерцаний или фигур, появляющихся после прокрутки. например Если я использую CATiledLayer и пользовательские свитки, вы можете увидеть все, что было сделано после прокрутки.
Плавное масштабирование. Масштабирование является особенно сложным, потому что формы должны быть нарисованы на частях обзора, которые станут видимыми. Кроме того, в идеале я бы предпочел не использовать что-то вроде CGAffineTransform для масштабирования, мне нравится иметь точное масштабирование пикселей.
Я пробовал разные вещи, но я не могу показаться, чтобы иметь возможность получить достойную частоту кадров даже на iPhone 6. Даже пытался рисовать каждый кадр, но это слишком дорого Core Graphics, чтобы справиться с этим. Есть ли примеры кода, которые кто-то пытается сделать аналогичную вещь или библиотеку с открытым исходным кодом? Я пытаюсь не использовать OpenGL, я чувствую, что это перебор, но я попробую, если придется. FYI, у меня пока нет опыта OpenGL.
Procreate для iPad делает то, что я пытаюсь сделать отлично, это супер отзывчиво, а масштабирование является точным. Я знаю, что они используют OpenGL, и я не занимаюсь рисованием приложений. Причина, по которой я упоминаю об этом, заключается в том, что она показывает, что я пытаюсь сделать, это возможно.
Не могли бы вы добавить немного больше данных на этих «прямоугольниках» и их содержании. Являются ли они просто полями с цветом или у них есть какое-то графическое содержимое, такое как изображения, подвид или подстроки? Вы ожидаете некоторой прозрачности? У них есть странные формы, такие как закругленные углы ... Даже openGL может не спасти вас в некоторых случаях. –
Это простые прямоугольники с одним цветом заливки. Никаких закругленных углов, странных фигур, содержимого и подземелий. Это похоже на то, что вы получаете, когда вы открываете область MIDI в GarageBand (iOS) для ее редактирования. – Nikolozi
Я создал полноэкранный просмотр прокрутки размера содержимого 10kx10k и добавил 2000 подвид в случайных местах внутри представления контента размером от 200 до 400 точек на измерение со случайными цветами и запускал его на iPhone5 и имел только небольшое отставание при полном масштабировании. Это кажется довольно большим числом. Основная графика, скорее всего, медленнее, чем плохая идея; Плитка никогда не будет иметь более высокую производительность, только возможно меньший объем памяти, но не в вашем случае. Я думаю, это должно быть быстрее с openGL, но не ожидайте, что магия произойдет сама по себе. –