Skip to content

Commit d7fec87

Browse files
authored
Floor the display scale when sizing remote images (#25697)
Replace UIScreen.main.scale with max(1, traitCollection.displayScale) in the post and page list cells, the networking image download, and the theme screenshot URL. The view's traitCollection.displayScale can be 0 before its traits resolve, so flooring at 1 (matching AsyncImageKit's ImageSize) avoids zero-size image requests.
1 parent 594a3be commit d7fec87

4 files changed

Lines changed: 5 additions & 4 deletions

File tree

Modules/Sources/WordPressUI/Extensions/UIImageView+Networking.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,9 @@ public extension UIImageView {
8686
self.image = placeholderImage
8787
}
8888

89+
let displayScale = max(1, traitCollection.displayScale)
8990
let task = URLSession.shared.dataTask(with: request, completionHandler: { [weak self] data, response, error in
90-
guard let data, let image = UIImage(data: data, scale: UIScreen.main.scale) else {
91+
guard let data, let image = UIImage(data: data, scale: displayScale) else {
9192
DispatchQueue.main.async {
9293
failure?(error)
9394
self?.downloadTask = nil

WordPress/Classes/ViewRelated/Pages/Views/PageListCell.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ final class PageListCell: UITableViewCell, AbstractPostListCell, PostSearchResul
6969
featuredImageView.isHidden = viewModel.imageURL == nil
7070
if let imageURL = viewModel.imageURL {
7171
let host = MediaHost(viewModel.page)
72-
let thumbnailURL = MediaImageService.getResizedImageURL(for: imageURL, blog: viewModel.page.blog, size: Constants.imageSize.scaled(by: UIScreen.main.scale))
72+
let thumbnailURL = MediaImageService.getResizedImageURL(for: imageURL, blog: viewModel.page.blog, size: Constants.imageSize.scaled(by: max(1, traitCollection.displayScale)))
7373
featuredImageView.setImage(with: thumbnailURL, host: host)
7474
}
7575

WordPress/Classes/ViewRelated/Post/Views/PostListCell.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ final class PostListCell: UITableViewCell, AbstractPostListCell, PostSearchResul
8686
featuredImageView.layer.opacity = viewModel.syncStateViewModel.isEditable ? 1 : 0.25
8787
if let imageURL = viewModel.imageURL {
8888
let host = MediaHost(viewModel.post)
89-
let thumbnailURL = MediaImageService.getResizedImageURL(for: imageURL, blog: viewModel.post.blog, size: Constants.imageSize.scaled(by: UIScreen.main.scale))
89+
let thumbnailURL = MediaImageService.getResizedImageURL(for: imageURL, blog: viewModel.post.blog, size: Constants.imageSize.scaled(by: max(1, traitCollection.displayScale)))
9090
featuredImageView.setImage(with: thumbnailURL, host: host)
9191
}
9292

WordPress/Classes/ViewRelated/Themes/ThemeBrowserCell.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ open class ThemeBrowserCell: UICollectionViewCell {
209209
queryItems.append(URLQueryItem(name: "w", value: "\(screenshotWidth)"))
210210
}
211211

212-
queryItems.append(URLQueryItem(name: "zoom", value: "\(UIScreen.main.scale)"))
212+
queryItems.append(URLQueryItem(name: "zoom", value: "\(max(1, traitCollection.displayScale))"))
213213
components.queryItems = queryItems
214214

215215
guard let urlString = components.url?.absoluteString else {

0 commit comments

Comments
 (0)