- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在实现一个 3D Touch 预览(peek) View Controller ,以在用力按下 PHAsset 时显示。我从 previewingContext:viewControllerForLocation:
返回的 View Controller 只是全屏显示照片。我目前没有在该 View Controller 上设置 preferredContentSize
,因此系统会根据需要调整它的大小。因此,当照片不完全适合框架时(或者如果我使用 ScaleAspectFill 而不是 Fit,照片会被裁剪),照片上方和下方会有一些额外的填充。我想确保不会发生这种情况 - 照片应该完全适合预览框架,没有额外的填充和裁剪。我的问题是,如何确定正确的尺寸?
PHAsset
具有非常有用的 pixelWidth
和 pixelHeight
。但是在Apple's sample code ,它指出设置内容大小时提供的宽度应为零,因为它不用于纵向。而且我可以确认它确实忽略了纵向宽度,但没有忽略横向宽度。所以我想我可以在预览 View Controller 中检测 View 的宽度,例如在 viewWillAppear
中,并使用它来执行计算,但这会返回与全屏相同的宽度(375 对于iPhone 6s)。
如何设置 preferredContentSize
以适合全尺寸图像的纵横比?
//Width should be zero, because it's not used in portrait.
photoViewController.preferredContentSize = CGSize(width: 0.0, height: 0.0)
请注意,Dropbox 应用的行为符合预期 - 预览窗口的大小适合正在预览的照片。当然还有照片应用。
最佳答案
经过进一步思考,我想到了一个不错的解决方案。只是一点点数学。 :)
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
if self.isShowingAsPreview {
let photoWidth = self.asset.pixelWidth
let photoHeight = self.asset.pixelHeight
let viewWidth = self.view.frame.size.width
let widthAspectRatio = CGFloat(photoWidth) / viewWidth
self.preferredContentSize = CGSizeMake(0, CGFloat(photoHeight) / widthAspectRatio)
}
}
因为纵向忽略了宽度,您可能希望在查看时将 imageView
的 contentMode
设置为 .ScaleAspectFill
,和 .ScaleAspectFit
弹出时。
关于ios - 根据预览 View Controller 的 PHAsset 大小计算 preferredContentSize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34584270/
我想根据一些设置更改模态框的 preferredContentSize。 例如:有一个开关,如果开关关闭,我想隐藏一些Cells。很好,但我还想调整模式的大小。 我会正常调整它的大小: var con
我有一个 TableView Controller ,它在 viewDidLoad 之后设置内容。在设置新内容时,我计算了 preferredContentSize。在显示弹出窗口之前,我可以查询 V
我正在寻找一种方法来强制执行 UIPopoverPresentationController 自动调整大小以填充大部分屏幕,减去 50 个填充单位。 我首先尝试在 viewDidLoad 中设置 pr
我正在使用 UIPopoverPresentationController 将我的 tableView Controller 呈现为 PopOver。我可以将其 preferredContentSiz
所以我有一个非常基本的 UIPresentationController,它基本上以屏幕为中心显示 contentView,它的大小由 View Controller preferredContent
我正在开发一个项目,我想让我的应用程序与 IOS7 兼容。 self.contentSizeForViewInPopover = CGSizeMake(90, 1 * 65 - 1); 此方法从 io
我正在尝试在 iPad 上从使用 UIPopoverController 切换到 ChildViewControllers。我们有 4 或 5 个 VC 在父导航 subview Controller
我想在 preferredContentSize(W: 250, H: 50) 的中心显示 PopoverViewController,但是它显示了那个 ViewController 的全尺寸,请找到
我能够通过简单地设置 preferredContentSize 成功地改变我呈现的弹出窗口的框架。我现在想为内容大小的变化设置动画,但我没有成功。它只是立即更新,事实上我设置的延迟甚至没有得到尊重。如
在弹出窗口的顶部,我有一个高度为 100px 的 UITextView,我使用 textView.textContainerInset = UIEdgeInsets(...)< 调整了其文本容器插入。
就像描述说的那样,我正在开发一个 iOS 应用程序,并想为其创建一个 Today Extension Widget。我的问题是我想将高度更改为 200。在研究之后,我发现唯一的解决方案是使用 pref
我有一个 NSWindowController ,其中包含 NSViewController 作为内容 View 。其中包含一些动态的文本。所以如果文字较多,我想增加窗口的高度。我可以使用下面的代码来
我正在实现一个 3D Touch 预览(peek) View Controller ,以在用力按下 PHAsset 时显示。我从 previewingContext:viewControllerFor
我正在使用 Xcode beta 6 在 iOS8 中开发 Today 扩展小部件。 我通过 viewWillAppear: 中的 setPreferredContentSize: 设置我的小部件的框
在我的 iOS 8 应用程序中,除了 iPhone 6 Plus 横向模式之外,此弹出窗口转场在所有方向的所有设备上均正确显示: 这是它在 iPhone 6 Plus 横向上的样子(它几乎从上到下拉伸
我调用如下所示的弹出窗口: if let vc = CalendarDetailViewControllerContainer.storyboardInstance() { vc.prefer
我有一个固定大小的 View Controller (无法调整大小)。这个特定的 View Controller 在窗口中显示为一个工作表,我通过设置 preferredContentSize 禁用了
我是一名优秀的程序员,十分优秀!