diff --git a/Signal/src/ViewControllers/Photos/ImagePickerController.swift b/Signal/src/ViewControllers/Photos/ImagePickerController.swift index 9e09a7535b..31550cad15 100644 --- a/Signal/src/ViewControllers/Photos/ImagePickerController.swift +++ b/Signal/src/ViewControllers/Photos/ImagePickerController.swift @@ -215,7 +215,12 @@ class ImagePickerGridController: UICollectionViewController, PhotoLibraryDelegat // Determine the size of the thumbnails to request let scale = UIScreen.main.scale - let cellSize = collectionViewFlowLayout.itemSize + let cellSize: CGSize + if hasEverAppeared { + cellSize = collectionViewFlowLayout.itemSize + } else { + cellSize = getLayout().itemSize + } photoMediaSize.thumbnailSize = CGSize(width: cellSize.width * scale, height: cellSize.height * scale) reloadData() @@ -334,7 +339,9 @@ class ImagePickerGridController: UICollectionViewController, PhotoLibraryDelegat return layout } - private func updateLayout() { + private typealias CellLayout = (itemSize: CGSize, remainingSpace: CGFloat) + + private func getLayout() -> CellLayout { let containerWidth = self.view.safeAreaLayoutGuide.layoutFrame.size.width let minItemWidth: CGFloat = 100 @@ -344,9 +351,14 @@ class ImagePickerGridController: UICollectionViewController, PhotoLibraryDelegat let availableWidth = max(0, containerWidth - interSpaceWidth) let itemWidth = floor(availableWidth / CGFloat(itemCount)) - let newItemSize = CGSize(square: itemWidth) + let itemSize = CGSize(square: itemWidth) let remainingSpace = availableWidth - (itemCount * itemWidth) + return (itemSize, remainingSpace) + } + + private func updateLayout() { + let (newItemSize, remainingSpace) = getLayout() if newItemSize != collectionViewFlowLayout.itemSize { collectionViewFlowLayout.itemSize = newItemSize // Inset any remaining space around the outside edges to ensure all inter-item spacing is exactly equal, otherwise diff --git a/Signal/src/ViewControllers/Photos/PhotoAlbumPickerViewController.swift b/Signal/src/ViewControllers/Photos/PhotoAlbumPickerViewController.swift index de4572ba51..bb09e54176 100644 --- a/Signal/src/ViewControllers/Photos/PhotoAlbumPickerViewController.swift +++ b/Signal/src/ViewControllers/Photos/PhotoAlbumPickerViewController.swift @@ -89,11 +89,12 @@ class PhotoAlbumPickerViewController: OWSTableViewController, OWSNavigationChild cell.backgroundColor = Theme.darkThemeBackgroundColor cell.selectedBackgroundView?.backgroundColor = UIColor(white: 0.2, alpha: 1) + let scale = UIScreen.main.scale let kImageSize: CGFloat = 80 let folderImageSpacing: CGFloat = 1 let folderImageSize = (kImageSize - folderImageSpacing) / 2 - let photoMediaSize = PhotoMediaSize(thumbnailSize: CGSize(square: kImageSize)) - let folderMediaSize = PhotoMediaSize(thumbnailSize: CGSize(square: folderImageSize)) + let photoMediaSize = PhotoMediaSize(thumbnailSize: CGSize(square: kImageSize * scale)) + let folderMediaSize = PhotoMediaSize(thumbnailSize: CGSize(square: folderImageSize * scale)) let contentCount: Int var assetItem: PhotoPickerAssetItem?