iphone: uiscrollview не прокручивает? но размер содержимого установлен ..? - PullRequest
7 голосов
/ 22 мая 2011

Эй, люди, у меня есть некоторые данные, и я хочу показать это в новом виде внутри стека навигации.

Я создал новый класс viewcontroller с файлом XIB.Затем я отредактировал файл XIB и поместил следующую иерархию:

1 files owner
2 first responder
3 scrollview
3.1 view
3.1.1 label1
3.1.2 label2
3.1.3 label3
3.1.4 image4

Я расположил надписи и изображение.содержимое ярлыков может отличаться, и их размер должен изменяться динамически.Я также сделал IBOutlets в классе viewcontroller и подключил все правильно.делегату представления владельца файла задано представление ..

, затем я загружаю viewcontroller и делаю в методе "viewDidLoad" следующее:

- (void)viewDidLoad {
[super viewDidLoad];

self.currentPageURL.text = [self.offerItem objectForKey: @"page-url"];
self.currentPrice.text = [self.offerItem objectForKey: @"price"];
self.currentRank.text = [self.offerItem objectForKey: @"rank"];
self.currentName.text = [self.offerItem objectForKey: @"name"];
self.currentProducerName.text = [self.offerItem objectForKey: @"producer-name"];

self.currentDescription.text = [self.offerItem objectForKey: @"description"];

self.imageViewForImage.image = [helperClass resizeImage:[self.offerItem objectForKey: @"picture"] forSize:CGSizeMake(280.0, 280.0) ];

[theScrollview setScrollEnabled:YES];
[theScrollview setContentSize:CGSizeMake(320, 1200)];
[theScrollview flashScrollIndicators];

[theScrollview addSubview:theView];

}

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

что я делаю не так?

Ответы [ 3 ]

20 голосов
/ 29 марта 2013

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

Это сработало для меня.

-(void)viewDidAppear:(BOOL)animated{
  [self.scrollView setContentSize:CGSizeMake(320, 1000)];
}

и извините за мой плохой английский.

11 голосов
/ 23 июня 2013

Убедитесь, что «Использовать Autolayout» не отмечен в атрибутах документа IB. У меня была та же самая проблема, устанавливая правильный contentSize и все, но с этой включенной функцией, прокрутка всегда была отключена.

Use Autolayout needs to be OFF

ОБНОВЛЕНИЕ Чтобы использовать Autolayout, явно установите ширину и высоту содержимого scrollView в методе viewDidAppear, например:

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    // set the scrollview to the specified size
    CGRect screenRect = [[UIScreen mainScreen] bounds];
    [scrollView setContentSize:CGSizeMake(screenRect.size.width, 1100)];

    [scrollView setBounds:CGRectMake(0, 0, screenRect.size.width, screenRect.size.height)];

    [scrollView setScrollIndicatorInsets:UIEdgeInsetsFromString(@"{0,0,0,-1.0}")];

}
4 голосов
/ 22 мая 2011

Немедленно измените кадр theScrollView на 320x480, и вы увидите прокрутку.

...