Ребята вы молодцы. Код прилагать ненадолго, так как лучше когда пальчики работают с мозгами. Но как вы преподносите это - просто треш. Во первых заставки текста очень быстрые и объяснений очень мало, во вторых вы в промежутке дописываете что-то или не записываете видео . А идея хорошая . У меня в конце этого видео не увидел "container" на 19.52сек . Спасибо за идею
Видео супер, вопрос почему если я просколю коллекшн и нажму на ячейку то новый контроллер открывается уже не из центра выбранной ячейки а откуда-то справа ? если не скролить все работает отлично)
Привет! Спасибо за фидбек) Что касается проблемы, скорее всего, ты забыл добавить сдвиг по оси X при скролле горизонтальной коллекции. Этот оффсет берется из метода scrollViewDidScroll протокола UIScrollViewDelegate. Данный метод добавляется в расширение контроллера, которое соответствует протоколу UICollectionViewDelegateFlowLayout. Ну потому что UICollectionViewDelegateFlowLayout соответствует протоколу UIScrollViewDelegate. Реализация метода выглядит как-то так: func scrollViewDidScroll(_ scrollView: UIScrollView) { self.scrollXOffset = scrollView.contentOffset.x } Этот оффсет сохраняется в переменную контроллера, а затем используется для расчет стартовой точки, откуда будет презентиться стори вью контроллер (Ширина контента коллекции (contentSize.width) много больше ширины экрана. Именно поэтому у тебя контроллер появляется откуда-то справа. Для решения этой проблемы необходимо лишь вычесть из координаты x центра ячейки [координаты центра ячейки считаются относительно content size коллекции] сдвиг от скролла этой коллекции, чтобы точка была всегда в пределах ширины экрана). Расчет координат стартовой точки выглядит следующим образом: private var startingAnimationPoint: CGPoint { ... let x = cellCenterPoint.x - self.scrollXOffset let y = cellCenterPoint.y + navigationBarHeight + navigationBarYOffset return CGPoint( x: x, y: y ) }
Что за container на 19:53, почему у меня нет его у selectedStoryCell?
Спасибо, очень полезно. Было бы круто если бы еще код прилагался
Спасибо за фидбек!
В скором времени планируется выложить код в открытый доступ.
Ребята вы молодцы. Код прилагать ненадолго, так как лучше когда пальчики работают с мозгами. Но как вы преподносите это - просто треш. Во первых заставки текста очень быстрые и объяснений очень мало, во вторых вы в промежутке дописываете что-то или не записываете видео . А идея хорошая . У меня в конце этого видео не увидел "container" на 19.52сек . Спасибо за идею
Видео супер, вопрос почему если я просколю коллекшн и нажму на ячейку то новый контроллер открывается уже не из центра выбранной ячейки а откуда-то справа ?
если не скролить все работает отлично)
Привет! Спасибо за фидбек)
Что касается проблемы, скорее всего, ты забыл добавить сдвиг по оси X при скролле горизонтальной коллекции. Этот оффсет берется из метода scrollViewDidScroll протокола UIScrollViewDelegate. Данный метод добавляется в расширение контроллера, которое соответствует протоколу UICollectionViewDelegateFlowLayout. Ну потому что UICollectionViewDelegateFlowLayout соответствует протоколу UIScrollViewDelegate.
Реализация метода выглядит как-то так:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
self.scrollXOffset = scrollView.contentOffset.x
}
Этот оффсет сохраняется в переменную контроллера, а затем используется для расчет стартовой точки, откуда будет презентиться стори вью контроллер (Ширина контента коллекции (contentSize.width) много больше ширины экрана. Именно поэтому у тебя контроллер появляется откуда-то справа. Для решения этой проблемы необходимо лишь вычесть из координаты x центра ячейки [координаты центра ячейки считаются относительно content size коллекции] сдвиг от скролла этой коллекции, чтобы точка была всегда в пределах ширины экрана).
Расчет координат стартовой точки выглядит следующим образом:
private var startingAnimationPoint: CGPoint {
...
let x = cellCenterPoint.x - self.scrollXOffset
let y = cellCenterPoint.y + navigationBarHeight + navigationBarYOffset
return CGPoint(
x: x,
y: y
)
}
@@big-tech-pro Большое спасибо! буду исправлять!