Поиск:

Ответ в темуСоздание новой темы Создание опроса
> UI фотогалереи 
:(
    Опции темы
Shklyar
Дата 3.4.2013, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 28.11.2007
Где: Kyiv

Репутация: нет
Всего: 3



Добрый день.

Я пытаюсь реализовать фотогалерею и нуждаюсь в рекомендации что использовать для построения UI: библиотеку Three20 или возможно обойтись стандартными компонентами из Storyboard?

Экран программки я себе представляю как фотографию в развернутом на экран виде с возможностью перелистывать на следующую фотографию. Дополнительная фича это вызвать миниатюры всех фотографий и по миниатюре перейти на конкретную.

Вобщем направьте, пожалуйста.
--------------------
https://www.youtube.com/watch?v=JZN8Xaebs_U
PM WWW   Вверх
Bitter
Дата 3.4.2013, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 10
Всего: 27



обычный UIScrollView с вьюхами. Начиная с версии 6 можете использовать UICollectionView
PM MAIL ICQ Skype   Вверх
Shklyar
Дата 3.4.2013, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 28.11.2007
Где: Kyiv

Репутация: нет
Всего: 3



Извините за мою неграмотность, я только учусь.
Если положить ImageView на ScrollView, то можно получить зумирование картинки. Я правильно представляю?
Для того, чтоб листать, нужно использовать новые ViewController-ы, на которые организовать связи.
Bitter, вы могли бы кратко описать как нужно делать такого рода storyboard комплект (если можно так сказать).
--------------------
https://www.youtube.com/watch?v=JZN8Xaebs_U
PM WWW   Вверх
Bitter
Дата 3.4.2013, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 10
Всего: 27



В целом ситуация выглядит так: Вы создаете UIScrollView, который представляет собой по сути контейнер для вьюх, далее задаете ему размер контента (не размер самого элемента на экране, а размер внутренней области, в которую накидываются объекты). Если размер контента больше размера скролВью, то он будет скролироваться в том направлении, в котором размер контента превышает размер скролВью. Теперь если вы накидаете вьюхи с картинками в этот скролВью, то получите, как вы написали, миниатюры всех фотографий.

Чтобы выбрать картинку и показать ее на весь экран, вы можете программно при клике на нее увеличить картинку до нужного размера и отключить возможность скролирования у скролВью. Чтобы вернуться вновь в миниатюры, достаточно уменьшить картинку до прежних размеров и снова включить скролирование.

Годится алгоритм?

Второй способ использовать UICollectionView, он работает по принципу обычной таблицы, только позволяет делать ячейки не только вниз, но и в сторону (то есть размещать ячейки матрицей).

Что касается сторибоарда, что тут не о чем рассказывать. Ставите на ваш вью скролВью нужного размера, а дальше все кодом.

P.S Если вам надо листать по-странично, то у скролВью есть свойство pagingEnabled
PM MAIL ICQ Skype   Вверх
Shklyar
Дата 3.4.2013, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 28.11.2007
Где: Kyiv

Репутация: нет
Всего: 3



Попробовал и вот как получилось: ViewController-View-ScrollView, в последнем несколько ImageView. Расставил по координатам ImageView-ы и в симуляторе увидал что-то похожее, однако скролится только частично. Наверное такая ситуация по той причине, что нужно задать размер скролл-контейнера. К сожалению я не понял как его задать.

Следующая моя проблема в том, что я не понимаю как получить ссылку в коде на объекты из сториборда или как увидать сториборд проект в виде кода.  

Также попробовал разобраться с листалкой по шаблону (нового проекта) Page-Based App. Нашел заполнение Модели данными и теряюсь на dataObject (в DataViewController.h - @property (strong, nonatomic) id dataObject;). Подскажите как проследить от данных до вью и как в данном шаблоне добавить данные к второму лейблу (если положить еще один лейбл на вью через сториборд).

И еще одно. Когда есть ImageView, то ему можно передавать через сториборд имя имаджа, который лежит в проекте. Я, пока, делаю так. Но дальше, наверное, можно получить ссылку на UIImageView и передать ему (UIImage *)imageWithContentsOfFile:(NSString *)path, где path будет именем имеджа, который лежит в проекте. Так может быть?
--------------------
https://www.youtube.com/watch?v=JZN8Xaebs_U
PM WWW   Вверх
Bitter
Дата 3.4.2013, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 10
Всего: 27



Shklyar, у вас наблюдается большой пробел знаний касательно сотрибоарда и вообще UI в целом. Так что его нужно заполнять через статьи и книги.

По теме. Прежде всего сторибоард является всего лишь XML файлом (который вы редактируете визуально во встроенном в XCode редакторе Interface Builder) и термины вроде передавать через сториборд и сториборд проект в виде кода являются абсурдом, так как передавать что-то через XML файл невозможно. Из сторибоарда можно загружать контроллеры (читать их из файла) и на этом все, запомните это.

Итак, у вас есть пустой контроллер в сторибоарде. Первым делом добавляем на него UIScrollView (скриншот)
Переходим к написанию кода контроллера, для того чтобы иметь доступ к скролВью, нужно создать свойство с модификатором IBOutlet для того чтобы потом связать это свойство с скролВью, который мы кинули на наш контроллер
user posted image

Переходим к сторибоарду и связываем свойство с скролВью. Нажимаете правой кнопкой на контроллере и тянете мышку на скролВью потом выбираете ваш проперти
user posted image

Дальше в коде назначаете размер контента:
user posted image

Ну и дальше кодом накидываете картинки. Будет скролиться по вертикали.

По поводу UIImageView. Если вы накидали картинок в проект, то загружайте их методом imageView.image = [UIImage imageNamed:@"picture"]. Без указания расширения. Так, если у вас будут файлы @2x для ретина экрана (например picture.png и [email protected]), они погрузятся автоматически.
Доступ к UIImageView из сторибоарда получаете так же как и в случает со скролВью, то есть через IBOutlet проперти
PM MAIL ICQ Skype   Вверх
Shklyar
Дата 4.4.2013, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 28.11.2007
Где: Kyiv

Репутация: нет
Всего: 3



Относительно меня - полностью с вами согласен, если не сказать большего.

Великолепный мануал! При сокрытии расширения, почему-то, в симуляторе нет картинок. Я почитал и так понял, что при ретина в любом случае произойдет поиск картинки @2x, или нет?

А еще мне непонятно как же линковать проперти с картинкой созданной программно. Ведь в сторибоард нету ссылки на UIImageView.
--------------------
https://www.youtube.com/watch?v=JZN8Xaebs_U
PM WWW   Вверх
Bitter
Дата 4.4.2013, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 10
Всего: 27



при ретине загружаются картинки @2x только если они есть, если нет, то будут загружаться обычные.

Если вы создаете картинку программно, то линковать ее со сторибоар не нужно. Сторибоард нужен только для предварительного создания интерфейса. Если вы создаете интерфейс программно, то разумеется его нет в сторибоарде, а значит и линковать с ним не надо.

Если вы создаете картинки программно, то их вы должны помещать в массив, а массив объявить как проперти:
Код

@property (nonatomic, strong) NSArray *_images;

PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | iOS | Следующая тема »


 




[ Время генерации скрипта: 0.0732 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.