根据 iOS 人机界面指南,模态视图可以采用页面表单或表单表单等形式。
页表被描述为:在横向放置的较大设备上部分覆盖底层内容。所有未覆盖的区域都变暗以防止与它们交互。在较小的设备上以纵向覆盖整个屏幕。
而表单为:显示在屏幕中央,但如果键盘可见,则可能会重新定位。所有未覆盖的区域都变暗以防止与它们交互。在较小的设备上可能会覆盖整个屏幕。
这两种形式在外观上的真正区别是什么?
我在开发者文档中找不到Form sheet的描述。只有页面表 ( https://developer.apple.com/reference/uikit/uimodalpresentationstyle/1621358-pagesheet )。
有好心人解释一下吗?谢谢!
最佳答案
你现在可能已经找到了这个问题的答案,但我想确保这个问题对其他偶然发现它的人都有答案。
在 iPad 等常规宽度、常规高度尺寸级别的设备上,Page Sheet 覆盖了几乎所有的垂直距离,但不会一直到顶部。水平方向,两边都留有空间。 Apple 的 Mail 应用程序在撰写新电子邮件时就是一个例子。这是模拟器的简单屏幕截图:
Form Sheet 与 Page Sheet 类似,不同之处在于它在每一侧都留有更多空间,并且在顶部和底部也留有更多空间。效果基本上是一个 float 框:
关于iOS Page sheet 和 Form sheet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38584411/
有没有人成功地从iPad上的UIModalPresentationStyleFormSheetViewController展示标准的AppleMFMailComposeViewController?当我这样做时,View会按预期显示,但是当用户点击任何输入TextView时,例如主题,键盘滑动按下取消按钮将显示“删除草稿”和“保存草稿”弹出窗口在屏幕边界之外。如果我将模态视图更改为全屏,它会正常工作。 最佳答案 我认为您当时没有将其作为表单呈现。使用这段代码对我来说很神奇:MFMailComposeViewController*ma
modalPresentationStyle-iPad上的FormSheet的高度到底是多少?我写了一行代码来获取self.view的高度,如下所示:println("Height-modalPresentationStyleFormSheet:\(self.view.frame.size.height)")我测试后得到了这两个结果:ModalViewController上没有Formsheet,高度为1024.0在modalPresentationStyle上使用Formsheet,1024.0的高度是错误的,因为高度应该小于1024.0知道它有什么问题吗?我需要使用表单表从self
我有一个简单的设置TableView,它是UINavigationController的第一个View。我使用.FormSheetmodalPresentationStyle显示设置UINavigationController,这意味着在iPhone上它会占据全屏,而在iPad上它会模态居中显示。现在我想要设置表中的一行将SFSafariViewController推送到导航堆栈。这在iPhone上工作正常,但在iPad上却不行。iPad截图:请注意,SFSafariViewController导航栏的一部分显示在导航栏下方(带有设置后退按钮)。请参见图像中的红色矩形。leturlTe