2013-12-20 3 views
0

Я создаю несколько видов прокрутки в одном представлении, которые прокручиваются по горизонтали. Следующий код работает отлично:UIScrollview не прокручивает iOS

-(void)updateSection { 
    builder = [NSMutableArray array]; 
    float xPosition = 0; 
    float xposbut = 100; 

    scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 100, self.frame.size.width, self.frame.size.height - 69)]; 

    scrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
    scrollView.delegate = self; 
    [self addSubview:scrollView]; 

    for (int i = 1; i < itemArticleArray.count; i++) { 
     ItemView *item = [ItemView loadNibs]; 
     item.frame = CGRectMake(xposbut, 10, item.frame.size.width, item.frame.size.height); 

     xPosition += scrollView.frame.size.width + 2; 
     xposbut += 500; 
     UIView *seperatorView = [[UIView alloc] initWithFrame:CGRectMake(xposbut - 50, 4, 2, scrollView.frame.size.height - 8)]; 
     [scrollView addSubview:seperatorView]; 
     xPosition += scrollView.frame.size.width + 4; 

     [scrollView addSubview: item]; 
     [builder addObject:item]; 
    } 

    [scrollView setContentSize:CGSizeMake(xposbut, scrollView.frame.size.height)]; 
    [self addSubview:scrollView]; 
} 

Однако, когда я изменяю 8-ю строчку кода на следующее:

scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 400, self.frame.size.width, self.frame.size.height - 69)]; 

Это заставит макет выглядеть хорошо, но вид прокрутки делать то не прокручивать вообще. Есть идеи?

+0

Какую строку кода вы изменили? –

+0

Извините, теперь я отредактировал сообщение выше –

+0

По крайней мере, один из параметров 'contentSize' должен быть больше, чем собственный размер scrollView', чтобы иметь возможность прокручивать где-нибудь. –

ответ

3

вы установили contentSize.height в scrollView.frame.size.height, и поэтому scrollView cant scroll. вам необходимо установить contentSize на общую высоту вас scrollView, включая непонятную область. Рамка - это только область на экране.

0

Задайте размер содержимого для прокрутки. Размер содержимого должен быть больше, чем frame.size, тогда будет прокручиваться только прокрутка. А также включить прокрутку.

Используйте код

scrollView.scrollEnabled=YES; 
scrollView.contentSize=CGSizeMake(CGFloat width, CGFloat height); 

Высота должна быть больше, чем scrollView.frame.size.height и добавить содержимое внутри Scrollview за раму scrolview в.

+0

Но я хочу, чтобы он прокручивался вертикально, а не горизонтально? –

+0

Создание прокрутки с содержанием content.height больше, чем frame.size.height позволит вам прокручивать по вертикали. Надеюсь, это поможет вам. :) – iGautham

0

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

0

Вы должны дать пролистывать некоторое пространство для работы, так проверьте это:

  1. Создать свиток в раскадровке
  2. Создать выход для свитка
  3. И в файле .m вы должны вставить эти строки

код:

(void)viewDidLoad { 
    [super viewDidLoad]; 
    yourScroll.scrollEnabled=YES; 
    yourScroll.contentSize=CGSizeMake(self.view.frame.size.width, self.view.frame.size.height*2); 
} 

/* 
* yourScroll.contentSize=CGSizeMake(your desired scroll width, your desired scroll height); 
* The values must be bigger than the viewController size 
*/ 
Смежные вопросы