Как сделать так, чтобы мой шаблон расширялся без растягивания? - PullRequest
0 голосов
/ 03 июня 2011

РЕДАКТИРОВАТЬ - я выяснил, что я изначально делал неправильно.Я изменял размер UIScrollView вместо подпредставления шаблона.Я исправил это, но исправил свой вопрос, добавив новую проблему.

Я делаю раздел заметок в своем приложении с эффектом линованной бумаги.Строки находятся в отдельном UIScrollView, который отвечает на scrollViewDidScroll:, поэтому строки и текст всегда перемещаются вместе.Мои строки настроены следующим образом: viewWillAppear:

CGRect noteLinesRect = CGRectMake(self.view.bounds.origin.x, 
                                  self.view.bounds.origin.y, 
                                  self.view.bounds.size.width, 
                                  noteTextView.contentSize.height+self.view.bounds.size.height);

UIScrollView *anoteXLinesView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
self.noteXLinesView = anoteXLinesView; 
[anoteXLinesView release];

LinePatternView *linesPattern = [[LinePatternView alloc] initWithFrame:noteLinesRect];
 self.linesPatternView = linesPattern; [linesPattern release];
[self.noteXLinesView addSubview:self.linesPatternView];
[linesPattern release];

CGPoint newOffset = CGPointMake(self.noteTextView.contentOffset.x, noteTextView.contentOffset.y - NOTE_LINES_OFFSET);
self.noteXLinesView.contentOffset = newOffset;

[self.view insertSubview:self.noteXLinesView atIndex:0];

Это прекрасно работает, когда пользователь впервые просматривает сохраненную заметку - весь текст красиво подчеркнут.Но когда они пишут больше текста, в конце концов они доходят до конца строк, которые я создал в viewWillAppear, и пишут на «чистом листе».Поэтому мне нужно, чтобы мой шаблон на линованной бумаге динамически увеличивался и уменьшался, поэтому он всегда немного больше, чем contentSize моего textView.Я пытаюсь сделать это следующим образом:

-(void)textViewDidChange:(UITextView *)textView
{
    self.linesPatternView.frame = CGRectMake( self.linesPatternView.frame.origin.x, //-self.noteTextView.contentOffset.y+NOTE_LINES_OFFSET, 
                                              self.linesPatternView.frame.origin.y, 
                                              self.linesPatternView.frame.size.width, 
                                              noteTextView.contentSize.height+self.view.bounds.size.height );
}

Проблема в том, что, хотя рисунок на линованной бумаге увеличивается в размерах, он не добавляет новых линий внизу.Вместо этого шаблон растягивается и становится больше по мере увеличения вида.Что я делаю не так?

Ответы [ 3 ]

1 голос
/ 03 июня 2011

Есть ли причина, по которой вы не просто используете мозаичный шаблон в качестве фонового представления backgroundColor?+colorWithPatternImage: в UIColor позволит вам установить фон, который будет расти до бесконечности и не будет растягиваться при изменении размеров вашего вида.Если часть фона должна отличаться - например, верхняя часть вашей бумаги - вы можете просто разместить изображение, содержащее его, в верхней части фонового представления.

1 голос
/ 03 июня 2011

Одним из решений является создание 3 представлений, каждое из которых содержит строки размера вашего кадра прокрутки на экране. Вы размещаете три под другим в представлении прокрутки и отслеживаете представление прокрутки через его делегата.

При прокрутке вниз вы проверяете:

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

При прокрутке вверх вы проверяете:

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

0 голосов
/ 03 июня 2011

Исправлена!В дополнение к изменениям, изложенным в моем редактировании вопроса выше, мне просто нужно было позвонить [self.linesPatternView setNeedsDisplay]; после изменения размера.

...