Как я могу задвинуть представление и из окна в программе Какао

Это просто два совершенно разных животных. При чтении из потока вы читаете простые количества ... символы, байты, строки. Затем, как вы показываете, вам нужно добавить дополнительный код для интерпретации этих величин более высокоуровневым способом.

Согласно документации для Scanner:

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

Так что Scanner добавляет еще один уровень функциональности поверх потока. Парсит вход. Он разбивает входящие данные на части и пытается интерпретировать их различными способами, более сложными, чем просто байты или строки. Сканер предоставляет вам множество функций, которые вы должны написать сами, если бы использовали простой поток.

Чтобы ответить на ваш конкретный вопрос несколько более остро ... дают ли оба предложенных блока кода требуемый результат? Если это так, и если вы не собираетесь читать и читать что-либо еще из потока, то, возможно, использование Scanner - это излишнее количество. Если вы собираетесь продолжать читать только целые числа из потока, возможно, лучше использовать необработанный поток. Но если вы в следующий раз захотите прочитать строку текста, или значение с плавающей запятой, или что-то еще, тогда, вероятно, вам нужен Scanner. Сканер обладает умом для работы с новыми строками. Вы должны сделать это самостоятельно с помощью основного потока.

12
задан Abizern 7 April 2009 в 17:30
поделиться

3 ответа

CoreAnimation является определенно Вашим лучшим выбором. Это было некоторое время, так как я работал с любым кодом CA, но чем-то как:

[UIView beginAnimations:@"slideOn" context:nil];

firstView.frame = shrunkFirstViewRect; // The rect defining the first view's smaller frame. This should resize the first view

secondView.frame = secondViewOnScreenFrame; // This should move the second view on the frame. 

[UIView commitAnimations];

Позже, Вы могли возвратиться к единственному использованию представления:

[UIView beginAnimations:@"slideOff" context:nil];

firstView.frame = normalFirstViewRect; // The rect defining the first view's normal frame. This should expand the first view.

secondView.frame = secondViewOffScreenFrame; // Move the second view off the screen

[UIView commitAnimations];

Править: Вышеупомянутый код для iPhone, я считал Ваш немного быстрый вопрос.

На Mac Вы хотели бы использовать (так же):

[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setDuration:1.0f]; // However long you want the slide to take

[[firstView animator] setFrame:shrunkFirstViewRect];

[[secondView animator] setFrame:secondViewOnScreenFrame];

[NSAnimationContext endGrouping];
19
ответ дан 2 December 2019 в 07:04
поделиться

Я никогда не пробовал, но я думаю, что CoreAnimation имеет интересные функции этого. Необходимо анимировать высоту view1 от полной высоты до половины высоты и положения view2 снаружи его суперпредставления к верхней половине его.

1
ответ дан 2 December 2019 в 07:04
поделиться

Следует отметить, если вы не устанавливаете продолжительность для блок анимации, значение по умолчанию составляет около 0,25 секунды, что на самом деле, кажется, очень хорошо работает в большинстве случаев.

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

2
ответ дан 2 December 2019 в 07:04
поделиться