Форум программистов, компьютерный форум CyberForum.ru

Скроллинг текста с анимацией - Objective-C

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
paparotnik
0 / 0 / 0
Регистрация: 27.11.2012
Сообщений: 60
16.01.2013, 14:43     Скроллинг текста с анимацией #1
Как реализовать такой скроллер, чтобы один из лейбл дойдя до верхней части экрана оставался вверху, а текст из другого лейбла скроллился дальше за пределы экрана, например как в инстаграмм, только вместо фотографий текст из второго лейбла
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2013, 14:43     Скроллинг текста с анимацией
Посмотрите здесь:

C# WPF Трудность с анимацией
Скроллинг текста в редакторе VB только у меня не работает или у всех? Visual Basic
Поиск текста Objective-C
C++ Проблемы с анимацией
Objective-C UIPageViewController + скроллинг вьюконтроллера
Кнопка с анимацией (Button с анимацией) C#

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vorona
Peace 2 all shining faces
 Аватар для Vorona
661 / 523 / 44
Регистрация: 05.03.2010
Сообщений: 1,268
16.01.2013, 23:02     Скроллинг текста с анимацией #2
Вариант 1:
можно сделать два скролвью: один нормально скролится и лежит поверх второго, а второй следит за оффсетом первого и если офсет первого (или второго) больше или меньше необходимых границ, то оставляем прежний оффсет второго скроллера
таким образом мы имеем дело с первым(верхним) скроллером, а нижний (со второй лейбой), просто подстраивается под него

Вариант 2:
обойтись одним скроллером и следить за его оффсетом, а при скроллинге просто оставлять лейбу сверху или снизу (изменять ее фрейм), если оффсет достиг нижней или верхней границы

(второй наверное лаконичней)
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
17.01.2013, 14:42     Скроллинг текста с анимацией #3
Развитие варианта 2 от Vorona:
Реализуем наследник UIScrollView и перегружаем ему layoutSubviews примерно так:
Objective-C
1
2
3
4
[super layoutSubviews];
CGRect headerFrame = self.headerLabel.frame;
headerFrame.origin.y = self.contentOffset.y;
self.headerLabel.frame = headerFrame;
headerLabel - это тот лейбл, который должен наверху висеть.
paparotnik
0 / 0 / 0
Регистрация: 27.11.2012
Сообщений: 60
21.01.2013, 14:51  [ТС]     Скроллинг текста с анимацией #4
Да вообщем-то так и сделал, как второй вариант, только слегка по-своему

C
1
2
3
4
5
6
7
8
9
10
11
12
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    
    [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:0.5];
 
        self.title.frame=CGRectMake(39, 10, 96, 23);
    self.more.frame=CGRectMake(187, 5, 44, 44);
 
    [UIView commitAnimations];
 
}
more-кнопка, которая так же должна была двинуться с места

А теперь вопрос, как учесть скорость скроллинга, чтобы при слишком быстром текст не наезжал на лейбл
И еще один вопрос, какой метод отвечает за слежку за тем, что текст полностью прокручен обратно, дабы вернуть лейбл, который двигался, на обратное место
zulkis
 Аватар для zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
21.01.2013, 16:25     Скроллинг текста с анимацией #5
только слегка по-своему
А вот не нужно велосипед придумывать, Вам написали - переопределяйте layoutSubviews. А Вы выдумываете чтото...
Разочарую, но скорость Вам будет сложно учесть.
mobidevelop все верно написал, так что берите идею и пользуйтесь.
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
21.01.2013, 16:40     Скроллинг текста с анимацией #6
Ну, если совсем не хочется наследоваться от UIScrollView, а обойтись делегатом, то тогда код установки фреймов можно перенести в метод scrollViewDidScroll:. Но так же без анимации и прочих излишеств. Все само получится.

Кстати, beginAnimations нынче не в моде. Советую почитать про animateWithDuration:animations: и иже с ними. Код получится несколько нагляднее и компактнее. А при известной сноровке еще и более расширяемым.
paparotnik
0 / 0 / 0
Регистрация: 27.11.2012
Сообщений: 60
21.01.2013, 17:33  [ТС]     Скроллинг текста с анимацией #7
Окей, спасибо за советы про анимацию и переопределение. Наследник скролл вью, всмысле надо класс создать новый и там переопределить его, а потом использовать как протокол?

Насчет скролла обратно нету никаких мыслей? но то бишь когда скроллер возвращается в обратное положение(прокручивается полностью вверх), какой метод следит за этим?
zulkis
 Аватар для zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
21.01.2013, 18:01     Скроллинг текста с анимацией #8
Цитата Сообщение от paparotnik Посмотреть сообщение
Наследник скролл вью, всмысле надо класс создать новый и там переопределить его, а потом использовать как протокол?
Изучайте ООП и базовые принципы.
paparotnik
0 / 0 / 0
Регистрация: 27.11.2012
Сообщений: 60
21.01.2013, 18:03  [ТС]     Скроллинг текста с анимацией #9
Я представлю что такое наследник, я имею ввиду как именно переопределить, создавать новый класс или просто метод определить в контроллере
zulkis
 Аватар для zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
21.01.2013, 18:10     Скроллинг текста с анимацией #10
Цитата Сообщение от paparotnik Посмотреть сообщение
я имею ввиду как именно переопределить, создавать новый класс или просто метод определить в контроллере
Вот такого вопроса не было бы, если бы Вы представляли что такое наследник и перегрузка метода.
Вот честное пионерское.
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
21.01.2013, 18:16     Скроллинг текста с анимацией #11
Цитата Сообщение от paparotnik Посмотреть сообщение
Насчет скролла обратно нету никаких мыслей? но то бишь когда скроллер возвращается в обратное положение(прокручивается полностью вверх), какой метод следит за этим?
Уважаемый, а Вы пробовали мой совет в деле? Документацию по этому методу читали? Может быть, стОит попробовать/почитать? Глядишь и вопросов бы таких странных не возникло...
paparotnik
0 / 0 / 0
Регистрация: 27.11.2012
Сообщений: 60
23.01.2013, 13:14  [ТС]     Скроллинг текста с анимацией #12
Цитата Сообщение от mobidevelop Посмотреть сообщение
Уважаемый, а Вы пробовали мой совет в деле? Документацию по этому методу читали? Может быть, стОит попробовать/почитать? Глядишь и вопросов бы таких странных не возникло...
Насколько я понял, ваш предложенный метод отслеживает ситуацию когда изменяются офсеты, каким образом он поможет в том, чтобы отследить ситуацию когда скролл вернулся на начальное положение??
Извиняюсь за возможную странность вопросов, но я еще новичок и только учусь, и мне интересно мнение опытных людей, документация не всегда расставляет все по полочкам так, как общение с шарящими людьми
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
23.01.2013, 13:39     Скроллинг текста с анимацией #13
А начальное положение - это не когда (scrollView.contentOffset.x == 0.0 && scrollView.contentOffset.y == 0.0) ?
Соответственно, это условие в указанном методе делегата всех спасет. Ну или если "начальное положение" - это что-то другое, то и цифири другие будут.
Фишка в том, что scrollViewDidScroll: вызывается сразу после того, как изменился contentOffset (в том числе и на "начальное положение"). В принципе, этой фразы должно быть достаточно. Дальше нужно включить либо мозг для "подумать", либо руки для "попробовать".
PS. Сам в таких случаях обычно предпочитаю последовательность:
1. руки (попробовать)
2. глаза (посмотреть что получилось)
3. мозг (подумать как адаптировать под свои нужды)
Задействуйте же хоть что-нибудь. Иначе так и останетесь "новичком" и ничему не научитесь. А "шарящим людям" интересно отвечать на интересные вопросы и помогать заинтересованным людям, а не раскладывать все по полочкам и уговаривать попробовать предложенные решения.
Так что смелее в бой. Потом расскажете - получилось или нет
paparotnik
0 / 0 / 0
Регистрация: 27.11.2012
Сообщений: 60
23.01.2013, 16:13  [ТС]     Скроллинг текста с анимацией #14
Да, все получилось! Спасибо
Yandex
Объявления
23.01.2013, 16:13     Скроллинг текста с анимацией
Ответ Создать тему
Опции темы

Текущее время: 08:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru