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 (子视图)上
通过 Interface Builder 更改 UIView 属性