является ли UIScrollView или UIWebView лучшим решением для этого?

Я разрабатываю приложение для iOS, и есть часть, представляющая собой раздел, который необходимо прокручивать. Я думал сделать это как UIScrollView (никогда не использовал его, но кажется логичным), но похоже, что contentSize всегда нужно вычислять. В этом случае это может быть очень изменчивым (изображения пользовательского контента и т. д.). Это правильно? Или есть законный обходной путь? Если нет, то будет ли UIWebView лучшим решением?

Функциональность приложения будет похожа на ленту FB или Instagram. Известно ли, что они используют (для меня FB выглядит как UIWebView).

Спасибо


person timpone    schedule 08.05.2012    source источник


Ответы (2)


На самом деле это зависит от того, чего вы пытаетесь достичь. Если вы используете веб-представление, вам придется сгенерировать html-код для его подачи, а если у вас есть кнопки, вам, вероятно, придется сгенерировать больше html/css/js, чтобы все заработало. Использование прокрутки не проблема... Вычислить размер содержимого легко... Высота всех ваших элементов + некоторое смещение между ними. Его границы останутся всегда одинаковыми, вам нужно только установить размер содержимого.

person graver    schedule 08.05.2012
comment
Что касается размера контента, то в большинстве примеров, которые я вижу, используются только изображения. У нас было бы много текста, который можно было бы ввести через apis. Таким образом, это не будет фиксированным сайтом. Кроме того, я думаю, что люди выполняют ленивую загрузку с помощью UIScrollView. Если да, то вы не знаете размер. Есть ли потенциальный обходной путь для этого? Или это звучит так, будто я должен делать UIWebView? - person timpone; 08.05.2012
comment
Вы можете динамически рассчитывать и изменять размер содержимого, и даже больше, получая положение прокрутки в представлении прокрутки, вы можете запрашивать дополнительные данные по запросу из API. Просто поступление новых данных увеличивает contentSize.height + 100p для примера... - person graver; 08.05.2012
comment
хорошо - это похоже на то, что мы обсуждаем: stackoverflow.com/questions/7508517/ . Но, как и в исходном вопросе, я немного больше думаю о создании UIScrollView, похожего на ленту Instagram. Что касается вашего комментария выше, это модель, которую вы предлагаете следующее: построить как первые 1000 пикселей контента и сделать его фиксированным только для вертикальной прокрутки. Поскольку пользователь может прокручивать только вниз, когда пользователь прокручивает вниз, захватите contentOffset, а затем добавьте к contentSize.height?cont - person timpone; 08.05.2012
comment
В какую функцию вы добавляете этот функционал? Есть ли способ наблюдать за свойством contentOffset? Вы бы использовали KVO или какой-то другой механизм? - person timpone; 08.05.2012

По моему опыту, у меня есть опыт разработки веб-приложений на стороне клиента до разработки iOS. Впервые я подумал, что UIWebView намного проще, чем UIScrollView, потому что я могу обрабатывать html/css/javascript по своему желанию.

Но я обнаружил проблему с UIWebView Performance. Если у вас сложное функциональное удобство и большой объем загрузки данных. Поэтому я пытаюсь реализовать с помощью UIScrollView. Конечно, мне довольно непросто создать сложный вид с помощью UIScrollView, но когда я был знаком с инструкцией по реализации. Я думаю, что UIScrollView имеет лучшую производительность, чем UIWebView, особенно сложный макет и удобство использования.

Я рекомендую вам использовать оба из них в зависимости от ситуации.

Для некоторых просто ViewController, которые просто отображают информацию с менее сложным использованием, UIWebView подойдет, если у вас есть знакомая разработка веб-приложений на стороне клиента.

Для некоторого сложного удобства использования это может быть непросто реализовать с помощью UIScrollView, но это вполне нормально для проблем с производительностью.

person Sakares    schedule 08.05.2012
comment
спасибо за ответ - я согласен с большей частью того, что вы говорите - это немного дилемма того, где я нахожусь. Похоже, заставить UIScrollView работать в сложном макете и обрабатывать такие проблемы, как абзац или два текста, будет сложно. - person timpone; 08.05.2012
comment
Кстати, вы также можете посмотреть проект Three20 three20.info. вы можете найти то, что вам нужно. - person Sakares; 08.05.2012
comment
посмотрели Three20 - так как мы уже начали работу. Я не думаю, что это правильно. Может быть, если бы мы использовали его с нуля. - person timpone; 08.05.2012