我正在实现一个 3D Touch 预览(peek)视图控制器,以在用力按下 PHAsset 时显示。我返回的视图控制器previewingContext:viewControllerForLocation:
只是全屏显示照片。我目前没有preferredContentSize
在那个视图控制器上设置,所以系统可以根据需要调整它的大小。因此,当照片不完全适合框架时,照片上方和下方会有一些额外的填充(或者如果我使用 ScaleAspectFill 而不是 Fit,照片会被裁剪)。我想确保不会发生这种情况 - 照片应该完全适合预览框架,没有额外的填充和裁剪。我的问题是,如何确定正确的尺寸?
PHAsset
有pixelWidth
,pixelHeight
这可能非常有用。但是在Apple 的示例代码中,它指出在设置内容大小时提供的宽度应该为零,因为它不用于纵向。我可以确认它确实忽略了纵向宽度,但没有忽略横向宽度。所以我想我可以在预览视图控制器中检测视图的宽度,viewWillAppear
例如,并使用它来执行计算,但这会返回与全屏相同的宽度(iPhone 6s 为 375)。
如何设置preferredContentSize
适合全尺寸图像的纵横比?
//Width should be zero, because it's not used in portrait.
photoViewController.preferredContentSize = CGSize(width: 0.0, height: 0.0)
请注意,Dropbox 应用程序的行为符合预期 - 预览窗口的大小适合正在预览的照片。当然还有照片应用程序。