2010-05-06 3 views
0

У меня есть подробная страница типа UIScrollView. На нем я хочу дополнительный UIImageView и обязательный UITextView. Если изображение отсутствует, изображение не должно занимать места. Текст для текстового представления может иметь разный размер.UiScrollView с прокручиваемым контентом

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

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

ответ

0

Вы должны вызвать setContentSize с размером взглядов.

CGRect frameOfImage; 
CGRect frameOfText; 
CGRect frameOfContent; 

frameOfImage.origin = CGPointZero; 
frameOfImage.size = myImage ? [myImage size] : CGSizeZero; 

[myImage setFrame:frameOfImage]; 

frameOfText.origin.x = 0; 
frameOfText.origin.y = frameOfImage.origin.y + frameOfImage.size.height; 
frameOfText.size = [myText.text sizeWithFont:myText.font forWidth:myScroll.bounds.width lineBreakMode:myText.lineBreakMode]; 

[myText setFrame:frameOfText]; 

frameOfContent = CGRectUnion(frameOfImage , frameOfText); 
frameOfContent.size.height += frameOfContent.origin.y; 
frameOfContent.size.width += frameOfContent.origin.x; 

[myScroll setContextSize:frameOfContent.size]; 

Вы могли бы сделать последний бит в layoutSubviews заказного UIScrollView или все это сразу в контроллере, когда вы знаете, есть ли изображение или нет.

0

Вы должны создать свой собственный вид, который наследуется после UIScrollView.

В пользовательских YourScrollView следует перезаписать

- (void) layoutSubviews; 

Там рассчитать размер текста, размер изображения (и дополнительное расстояние между тогдашним), а затем установите contentSize для вида прокрутки с помощью:

[self setContentSize:CGSizeMake(CGRectGetWidth(self.bounds), yourCalculatedHeight)]; 

Надеется, что это помогает, Пол

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