Существует нет встроенного в переходный период, который делает это для вас (я предполагаю, что вы говорите об изображениях, которые переходящих их frame
/center
на другой чем само представление). Вам, вероятно, придется написать это самостоятельно. Требуется некоторое базовое знакомство с распознавателями жестов и анимацией просмотра.
Основной эффект заключается в одновременной корректировке свойства center
для двух изображений при изменении frame
этих видов (или их суперспектаклей). (Или вы можете достичь этого, имея вид изображения, contentMode
- UIViewContentModeCenter
и просто изменение frame
.) Я предлагаю вам начать с некоторых простых тестов эффекта и построить оттуда.
Например, я создал сцену, которая имеет две точки зрения изображения, чьи autolayout ограничения были определены следующим образом:
H:|[leftImageView][rightImageView]|
V:|[leftImageView]|
V:|[rightImageView]|
Я тогда определил ограничение ширины для leftImageView
, и подключил его к IBOutlet
для это ограничение, например leftImageWidthConstraint
. Я тогда UIPanGestureRecognizer
, которые могли бы справиться с жест, просто изменяя этот leftImageWidthConstraint
соответствующим образом (и с автоматической компоновки, остальная часть кадра рассчитывается автоматически для меня от этого):
- (void)handlePan:(UIPanGestureRecognizer *)gesture
{
CGPoint translate = [gesture translationInView:gesture.view];
static CGFloat width;
if (gesture.state == UIGestureRecognizerStateBegan)
{
width = self.leftImageWidthConstraint.constant;
}
CGFloat newWidth = width + translate.x;
if (newWidth < 0)
newWidth = 0;
else if (newWidth > self.view.bounds.size.width)
newWidth = self.view.bounds.size.width;
self.leftImageWidthConstraint.constant = newWidth;
// if you let go, animate the views to their final position
if (gesture.state == UIGestureRecognizerStateEnded)
{
// if more than half way, set left view's target width to take up full width,
// otherwise set left view's target width to zero
if (newWidth > (self.view.bounds.size.width/2.0))
newWidth = self.view.bounds.size.width;
else
newWidth = 0;
// animate the changing of the constraint (and thus the `frame`) accordingly
self.leftImageWidthConstraint.constant = newWidth;
[UIView animateWithDuration:0.5 delay:0.0 options:UIViewAnimationOptionCurveEaseOut animations:^{
[self.view layoutIfNeeded];
} completion:nil];
}
}
Таким образом, как я панорамирование по горизонтали, два изображения по центру в пределах своих стриженых кадров:
Это очень простая реализация идеи. Тем не менее, есть тонна деталей реализации (пользовательский контейнер против подзаголовков, автозапуск против нет и т. Д.), Поэтому, пока вы не ответите на некоторые из этих вопросов, будет трудно быть более конкретным.
Не все используют приложение погоды Yahoo (которое также может измениться). Добавьте изображение или два или лучше описывайте, чего вы пытаетесь достичь. – rmaddy