我创建了一个UistoryBoardSegue来制作一个“底片Segue”。我们的设计师在他的手机上分享了一张应用程序的截图,底片的显示方式不同,尽管事实上我们都在同一个iOS版本上。
在我和我的模拟器上,当底部表单打开时,它会使源代码视图变亮,然后将其缩小一点,因此它几乎就出现在底部表单的后面
在Designer设备的同一屏幕上,它会使背景变暗并保留源代码视图的完整大小,同时显示导航栏中按钮的顶部
我注意到苹果Map的底部工作表和设计师的一样,没有缩小背景视图。但是我看不到任何会影响这个的设置。我怎么才能阻止工作表调整我的源视图的大小,并像它应该的那样工作呢?
下面是我的代码:
import UIKit
public class BottomSheetLargeSegue: UIStoryboardSegue {
override public func perform() {
guard let dest = destination.presentationController as? UISheetPresentationController else {
return
}
dest.detents = [.large()]
dest.prefersGrabberVisible = true
dest.preferredCornerRadius = 30
source.present(destination, animated: true)
}
}
1条答案
按热度按时间xxhby3vn1#
找到了一个黑客,迫使它永远不会最小化源代码视图,至少,不是真的我想要的,但保持它的一致性。假设,
.large()
总是应该最小化源代码视图,你可以避免在iOS 16中创建一个自定义的制动器,只是比大的小一点点,像这样:另外,我发现了一种控制底部表单覆盖层变暗的方法。presentationController上有一个
containerView
属性,但在segue中尝试访问它时,该属性为空。如果强制代码在主线程上运行,则在调用present之后,可以访问containerView并设置自己的颜色/颜色动画例如: