Макетная сетка с изображениями, метками, прокруткой - PullRequest
1 голос
/ 29 февраля 2012

Я создаю макет для приложения для iPad, который будет состоять из xx количества изображений и кнопок (определяется динамически в зависимости от ответа на вызов веб-службы), и мне нужно разместить их в виде сетки в виде прокрутки (горизонтальный) ... Теперь я знаю, что есть много пользовательских элементов управления пользовательского интерфейса, которые могут делать что-то похожее на это, но я не нашел такого, который соответствовал бы моим «потребностям» ...

По сути, я хочу / нуждаюсь в том, чтобы каждая «запись» имела изображение, оверлейное изображение, кнопку, соответствующую размеру изображения, и две метки сверху изображения ...

Так кто-нибудь знает о пользовательском элементе управления пользовательского интерфейса, который будет соответствовать тому, что я хочу?

Или я должен написать это с нуля?

Я потенциально могу иметь всего 10 записей, но также и до 100+ (возможно, не намного выше этого), поэтому, возможно, есть более дружественный к памяти подход, чем тот, который я рассматриваю ниже. .. - другая проблема заключается в том, что мне нужно повторять это каждый раз, когда появляется представление (причина: мне нужно показать обновленные данные) ...

Я провел некоторые начальные тесты по созданию сетки вручную, и пока что это так:

int rows = 3; // fixed, will either be 2 or 3, depending on final size of images...
int columns = 8;// will be determined by response from web service

for(int i = 0; i < columns; i++)
{
    for(int j = 0; j < rows; j++)
    {
        // Create the buttons to handle button press
        UIButton *childButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];

        childButton.frame = CGRectMake(i * 100 + 10, j * 100 + 20, 100, 30);

        [childButton setTitle:@"Test" forState:UIControlStateNormal];

        [childButton addTarget:self action:@selector(presentPopoverMenu:) forControlEvents:UIControlEventTouchUpInside];

        [self.scrollView addSubview:childButton];

        // Create the images to display the pictures of the children


        // Create the labels to display child name


        // Create the labels to display pick up time
    }
}

1 Ответ

0 голосов
/ 29 февраля 2012

Я бы предложил создать собственный вид ... Создать собственный класс из UIView и поместить все эти элементы управления на него. Вам, вероятно, следует создать initWithCustomData, где пользовательские данные - это то, что вы получаете из Интернета. Когда у вас есть все, что вы можете отсортировать их так, как вы хотите, как если бы они были одним простым элементом управления. Что касается обновления. Если весь вид имеет фиксированный размер, просто создайте несколько внутренних методов в пользовательском представлении, чтобы изменить кадры подпредставлений. Если фрейм динамический, вы в основном делаете то же самое, но вам нужно переместить все пользовательские представления (просто используйте анимацию UIView).

...