From fbc2eb35ec062a6d76ae237b72af161f6ff3dfb3 Mon Sep 17 00:00:00 2001 From: ryanzhao Date: Tue, 24 Jan 2023 17:08:32 +1100 Subject: [PATCH] wip: carousel media preview view --- .../MediaInfoVC+MediaInfoView.swift | 2 +- .../MediaInfoVC+MediaPreviewView.swift | 4 +-- .../Media Viewing & Editing/MediaInfoVC.swift | 32 ++++++++++++++----- 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/Session/Media Viewing & Editing/MediaInfoVC+MediaInfoView.swift b/Session/Media Viewing & Editing/MediaInfoVC+MediaInfoView.swift index 866bf7bcb..f75c96ba5 100644 --- a/Session/Media Viewing & Editing/MediaInfoVC+MediaInfoView.swift +++ b/Session/Media Viewing & Editing/MediaInfoVC+MediaInfoView.swift @@ -54,7 +54,7 @@ extension MediaInfoVC { // MARK: - Lifecycle - init(attachment: Attachment?) { + init(attachment: Attachment? = nil) { self.attachment = attachment super.init(frame: CGRect.zero) diff --git a/Session/Media Viewing & Editing/MediaInfoVC+MediaPreviewView.swift b/Session/Media Viewing & Editing/MediaInfoVC+MediaPreviewView.swift index f504e0261..c2bc0b69b 100644 --- a/Session/Media Viewing & Editing/MediaInfoVC+MediaPreviewView.swift +++ b/Session/Media Viewing & Editing/MediaInfoVC+MediaPreviewView.swift @@ -59,8 +59,8 @@ extension MediaInfoVC { } private func setUpViewHierarchy() { - set(.width, to: 293) - set(.height, to: 293) + set(.width, to: MediaInfoVC.mediaSize) + set(.height, to: MediaInfoVC.mediaSize) addSubview(mediaView) mediaView.pin(to: self) diff --git a/Session/Media Viewing & Editing/MediaInfoVC.swift b/Session/Media Viewing & Editing/MediaInfoVC.swift index 17a4666dd..33a808d62 100644 --- a/Session/Media Viewing & Editing/MediaInfoVC.swift +++ b/Session/Media Viewing & Editing/MediaInfoVC.swift @@ -5,10 +5,14 @@ import SessionUIKit import SessionUtilitiesKit final class MediaInfoVC: BaseVC { + internal static let mediaSize: CGFloat = 293 private let attachments: [Attachment] private let isOutgoing: Bool + // MARK: - UI + private lazy var mediaInfoView: MediaInfoView = MediaInfoView() + // MARK: - Initialization init(attachments: [Attachment], isOutgoing: Bool) { @@ -36,18 +40,30 @@ final class MediaInfoVC: BaseVC { hasCustomBackButton: false ) + let mediaStackView: UIStackView = UIStackView() + mediaStackView.axis = .horizontal + attachments.forEach { let mediaPreviewView: MediaPreviewView = MediaPreviewView( attachment: $0, isOutgoing: isOutgoing) - let mediaInfoView: MediaInfoView = MediaInfoView(attachment: $0) - - let stackView: UIStackView = UIStackView(arrangedSubviews: [ mediaPreviewView, mediaInfoView ]) - stackView.axis = .vertical - stackView.spacing = Values.largeSpacing - - self.view.addSubview(stackView) - stackView.center(in: self.view) + mediaStackView.addArrangedSubview(mediaPreviewView) } + + let scrollView: UIScrollView = UIScrollView() + scrollView.isPagingEnabled = true + scrollView.set(.width, to: Self.mediaSize) + scrollView.set(.height, to: Self.mediaSize) + scrollView.contentSize = CGSize(width: Self.mediaSize * CGFloat(attachments.count), height: Self.mediaSize) + scrollView.addSubview(mediaStackView) + + mediaInfoView.update(attachment: attachments[0]) + + let stackView: UIStackView = UIStackView(arrangedSubviews: [ scrollView, mediaInfoView ]) + stackView.axis = .vertical + stackView.spacing = Values.largeSpacing + + self.view.addSubview(stackView) + stackView.center(in: self.view) } }