gpt4 book ai didi

ios - 框架原点与一组不同

转载 作者:行者123 更新时间:2023-11-28 06:00:58 25 4
gpt4 key购买 nike

在 viewWillLayoutSubviews 中,我将 View 的 frame y 原点设置为 UIScreen.main.bounds.height,这意味着该 View 不应该可见,因为它在所有内容下方(我将 super.viewWillLayoutSubviews 称为所有内容之上)。

在 View 层次结构检查器中, View 看起来与预期完全一样,但在真实设备上你可以看到它的外观更低,它可以在真实设备的屏幕底部看到,即使原点是屏幕高度。

view hierarchy

real device view

我的问题是为什么自定义 View 在真实设备上看起来不同。还有什么导致这个奇怪的错误?非常感谢任何反馈,提前致谢。

编辑:这个视觉错误发生在除 iPhone X 之外的所有设备上

Edit2:这是我用来设置 View 框架的代码

customView.frame.origin.x = 0
customView.frame.origin.y = UIScreen.main.bounds.height
customView.frame.size.width = UIScreen.main.bounds.width
customView.frame.size.height = UIScreen.main.bounds.height * 0.72

Edit3:发现了这个 bug,可惜我一开始没有发布这段代码,我从没想过这个 bug 会因此而发生。

    let imgView = UIImageView(frame: CGRect(x: 0, y: 0, width: customView.frame.width, height: customView.frame.height))
imgView.contentMode = .scaleAspectFill
imgView.image = gradientImage
customView.addSubview(imgView)
customView.sendSubview(toBack: imgView)

错误来自这一行:

imgView.contentMode = .scaleAspectFill

将此更改为:

imgView.contentMode = .scaleToFill

非常非常抱歉没有从一开始就提到这个,我的错,我要感谢大家的帮助,也感谢@matt 指出这段代码应该在 viewDidLayoutSubviews() 中。

最佳答案

看起来您的自定义 View 是(或包含)一个 UIImageView,可能 contentMode 设置为 .aspectFill。如果是这种情况,请尝试将该 ImageView 的 clipsToBounds 设置为 true(或选中 Interface Builder 中的等效复选框)。

contentMode 设置为 .aspectFill 的 ImageView 实际上可以让它们的内容溢出 ImageView 的边界,所以这看起来就是这里发生的事情。

关于ios - 框架原点与一组不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49763493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com