UiScrollView с прокруткой контента - PullRequest
0 голосов
/ 06 мая 2010

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

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

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

Ответы [ 2 ]

0 голосов
/ 08 мая 2010

Вы должны вызывать 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 голосов
/ 06 мая 2010

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

В вашем обычном YourScrollView вы должны перезаписать

- (void) layoutSubviews;

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

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

Надеюсь, это поможет, Пол

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...