Как реализовать UIScrollView с подпредставлениями из XIB - PullRequest
0 голосов
/ 15 января 2011

Какой лучший способ добавить UIView (из xib) в UIScrollView в формате сетки?

Я посмотрел в AQGridView, но я не уверен, с чего начать создавать нужные мне представления.

1 Ответ

0 голосов
/ 15 января 2011

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

Я также предполагаю, что вы создали экземпляр UIView в IB, настроили все соответствующие соединения и указатель в вашем коде.

Затем в вашем контроллере, который владеет UIScrollView (и это то, что я хотел бы сделать и делал раньше), проходит цикл по всем вашим UIViews (после того, как вы скопируете шаблон, созданный в xib; снова я при условии, что здесь ваш вопрос не очень хорошо определен), установите их фрейм с помощью простой математики, а затем добавьте их в UIScrollView с помощью addSubview. В конце убедитесь, что для вашего contentSize UIScrollView задано соответствующее значение.

Вот пример:

-(void)displayNewView:(NewView *)newIcon {
    //create view object
    NewViewController *newVC = [[NewViewController alloc] init];

    //modify the new UIView so it shows the correct state
    newVC.networkHost = newIcon;

    //add view object to screen
    [self.scrollView addSubview:newVC.view];

    //release a retain on the object
    [newVC release];

    //reposition the view object
    newVC.view.frame = CGRectMake((self.viewsOnDisplay%3*104), (self.viewsOnDisplay/3*105+6), 106, 95);

    //resize the view if necessary
    self.scrollView.contentSize = CGSizeMake(320.0, (self.viewsOnDisplay/3*105+96+6));
}

В строке, где представление переставлено, происходит математическая сумма, и вместо того, чтобы показывать вам кучу символов, я взял строку из одного из моих приложений, и я скажу вам, что означает каждое число (все они отличается, так что это удобный способ их различить):

3: number of views per row
104: horizontal spacing between views

105: vertical spacing between views
6: space at the very top of the UIScrollView (a header if u will)

106: view width
95: view height

Поскольку это метод, который просто добавляет один UIView на экран, он получает доступ к локальному синтезированному свойству self.viewsOnDisplay, чтобы узнать, сколько видов уже отображено, поэтому он знает, куда поместить следующий. Если бы вы делали это как часть цикла for или чего-то еще, это было бы просто i (или как называется счетчик var). Имейте в виду, что ваш счетчик должен начинаться с 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...