2010-06-29 6 views
1

У меня есть группа 'rowviews', которую я хочу поместить в вертикальное представление прокрутки. Я создал это представление rowView как отдельный бит в IB. Они имеют размер 1024/200 (ipad). Теперь я хочу поместить их один за другим в родительский UIScrollView. Я попробовал простую [vScroll addSubview: rowView], но это ставит их в верхнюю часть eachother (я сделал прозрачность rowview, чтобы проверить это). Итак, я начал обманывать границы каждого rowview безрезультатно. Это мой код. Примечание «self.yExtentSoFar» инициализируется 0. Представьте код ниже под названием для каждой строки:UIView setBounds UIScrollView ад!

  MyRowView *rowView = [[MyRowView alloc] init]; 

    float calculatedWidth = 0; 
    // minus nav bar 
    float calculatedHeight = 0; 
    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 
    UIInterfaceOrientation orientation = [UIDevice currentDevice].orientation; 
    if (orientation == UIInterfaceOrientationPortrait){ 
     // iPad 
     calculatedWidth = 768.0; 
     calculatedHeight = 960.0; 
    }else{ 
     // iPad 
     calculatedWidth = 1024.0; 
     calculatedHeight = 704.0; 
    } 

    [self.vScroll addSubview: rowView.view]; 
    [rowView.view setBounds:CGRectMake(0, self.yExtentSoFar, calculatedWidth,200)]; 
    [self.vScroll setContentSize:CGSizeMake(calculatedWidth, yExtentSoFar+200)]; 
    self.yExtentSoFar += 200; 

Итак, прежде чем я попытался настройки ограничивающей rowviews появились возвышаться друг от друга. Понятно, я думаю. Когда я устанавливаю границы, представление второй строки не появилось под первым, как ожидалось, вместо этого мне нужно вытащить vScroll, а второй появился ВЫШЕ первого экрана!

Может ли кто-нибудь указать на то, где я ошибаюсь? Большое спасибо,

Майк

+0

Просто мысль, х и у являются 0,0 в верхнем левом углу правой? –

+0

на iPhone для просмотров, да. –

+0

Хорошо, тогда тогда почему значение y 200 положило бы его отрицательным? –

ответ

3

Вы хотите разместить свои объекты в подзонах, установив их frame.

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

См «Отношения рамы, Bounds и Центр» View Programming Guide for iPhone

+0

Отлично !!! Thankyou :) –

+0

Кроме того, при работе с коллекцией представлений в 'UIScrollView' я храню их в виде контейнера. Это помогает, когда мне нужно перебирать «прокрученные» подпрограммы, чтобы работать с ними. Если вы полагаетесь на 'myScrollView.subviews', вы получите список индикаторов полосы прокрутки! (вид контейнера - это мое единственное подчинение 'myScrollView') – ohhorob

2

Вы делаете это неправильно ;-) Что вы объяснили здесь более или менее повторное выполнение того, что вы получите, используя UITableView. Use a UITableView и пользовательскую ячейку вида таблицы. Это сделает вашу жизнь намного проще.

+0

Использование пользовательского представления UITableCell выглядит более сложным. Я просто хочу вытащить свои взгляды в UIScrollView. Почему они появляются друг на друга (с экрана), а не друг на друга. Я не могу себе представить, когда нужна вертикальная ситуация с прокруткой, люди используют UITable. –

+0

Не быть забавным, но на самом деле, можете ли вы представить это или нет, люди очень часто используют UITableView. Согласно вашему описанию в вашем вопросе, это именно то, что вам нужно. Узнайте, как использовать представления таблиц. Как я уже говорил, это облегчит вашу жизнь. Доверьтесь мне. ;-) –

+0

Прежде всего, спасибо за ваш ответ. Я просто чувствую, что повторное использование существующего компонента полезно только в том случае, если вы бесплатно получаете функциональность, которую вам в противном случае пришлось бы создавать. Как только я реализую все методы делегирования и прочее для таблиц и обманываю себя с помощью собственных представлений ячеек таблицы, я мог бы написать 3 строки для vScrollView. Я также просто хотел узнать из интереса, что случилось с моей вещью. @ohhorob ответил, что для меня. Благодарю за ваш ответ! Я дам им попробовать в следующий раз. –

Смежные вопросы