XCODE:UIView 背景没有出现在屏幕上,即使我在情节提要中设置了颜色并以编程方式

Posted

技术标签:

【中文标题】XCODE:UIView 背景没有出现在屏幕上,即使我在情节提要中设置了颜色并以编程方式【英文标题】:XCODE: UIView background not appearing on screen, even though I set color in storyboard and programmatically 【发布时间】:2020-12-31 18:08:02 【问题描述】:

我有一个 UIView 放入我的 viewController 中,只是为了整理一下,我正在尝试将背景颜色设置为我拥有的自定义蓝色。我已经在身份检查器中设置了背景颜色并以编程方式:

searchRadiusView.backgroundColor = #colorLiteral(red: 0.00859087177, green: 0.09247856156, blue: 1, alpha: 1)

我在 viewDidLoad 中设置了它。这是情节提要的图片,它将 UIView 背景显示为正确的颜色:

这是我的模拟器中的视图:

澄清一下,“搜索半径 (mi.)”标签后面的蓝色只是标签背景颜色。知道为什么视图没有显示颜色以及如何修复它吗?谢谢

【问题讨论】:

您的约束似乎有问题。 如果它的红色表示有问题?有没有办法找出问题? 我认为需要 centerX、centerY 约束。 我在哪里设置这些约束? 【参考方案1】:

我不知道为什么这个 UIView 给了我这么多约束错误(我是 UIViews 的新手,所以这可能是典型的),但我决定只给视图中的每个元素一个恒定的宽度和高度,并固定四个边中的每一个,以及它们所处的距离。然后我设置了我想要的实际 UIView 的约束,所有错误都消失了,我的颜色出现了。出于某种原因,我不得不保持一切不变,这将阻止视图的大小根据手机类型而改变。这可能是好事也可能是坏事,这取决于你如何看待它。

【讨论】:

【参考方案2】:

您可以在 Storyboard 中设置自动布局约束(或者对于那些在 Xcode 中工作足够长的人,IB)。此外,您可以通过直接代码来完成。

要记住两件事。

所有视图都需要两件事 - 大小和位置。

位置可以相对于屏幕或其他视图,通常用“X 和 Y”术语来描述。但它们可以是从顶部、底部、前导、尾随、中心 X 和中心 Y 的所有内容。只要您已经为视图定义了一个唯一 X/Y 点(强调唯一),布局引擎将知道在哪里放置它。 p>

一些视图具有固有大小。

大小(显然)是宽度和高度。让我们采取三种类型的观点。一个文本字段、一个标签和一个滑块。文本字段需要明确定义的宽度和高度。滑块需要一个宽度,但你真的不能给它一个高度。这两个很容易看到。

当您刚刚学习自动布局时,可能更难掌握标签(有时是按钮)。它们有所谓的内在大小。

假设您有一个标签,其文本设置为“Hello world!”。假设字体是设置为 12 磅的系统字体。该标签需要布局位置,但不需要尺寸。系统将决定它 - 并根据用户设置动态更改它。

作为开发人员,您可以做几件事。显然,您可以指定字体大小,这将 (a) 防止操作系统或 DynamicType 改变事物 - 但这不会改变内在大小。这是您可以做的另一件事 - 通过约束设置高度和宽度。

如果这是您唯一要做的事情 - 设置大小而不是字体 - 如果用户在操作系统中选择的字体太大,标签将截断内容。

但最后,您需要使用您的约束设置两个独特的东西 - 大小和位置。

【讨论】:

以上是关于XCODE:UIView 背景没有出现在屏幕上,即使我在情节提要中设置了颜色并以编程方式的主要内容,如果未能解决你的问题,请参考以下文章

如何使 UIView 不出现在背景上但仍出现在 UIImageView (子视图)上

UIView 可访问性问题

Xcode 启动屏幕上的图像视图出现片刻然后消失

通过 Interface Builder 更改 UIView 属性

制作一个 UIVIew,它出现在 xcode 项目中的所有 .NIb 文件上

使用自动布局强制 UITableView 中的 UIView 填满屏幕