gpt4 book ai didi

ios - 如何在 UIStackView 中设置 UIView 的背景颜色?

转载 作者:可可西里 更新时间:2023-11-01 00:54:17 25 4
gpt4 key购买 nike

我正在制作一个详细信息屏幕,它在 Storyboard View Controller 中有几个嵌套 View :ScrollView > UIView > StackView > 5 UI Views。每个 UI View 都是一个包含标签和编辑文本的不同部分。

当我在 Storyboard 中设置其中一个 UIView 的背景时,它会发生变化,但当我运行模拟器或在 iPad 上时不会反射(reflect)这种变化。

下图左边是模拟器 View ,右边是 Xcode 中的 Storyboard。您可以看到模拟器在嵌套的 UIView 上没有显示背景颜色,而 Storyboard 显示了背景颜色。

Emulator vs Storyboard

因为有人要求这里是完整的 Storyboard 。很难看到,但它是一个连接到三个 Split View Controller 的选项卡 View Controller 。

Full Storyboard

通过仅使用特定 View 进行测试,我将范围缩小到包含导致问题的 5 个 UIView 的 UIStackView。我试过附加一个 Controller 并更改代码中的颜色,但我尝试过的任何操作似乎都无法改变它。

class ClientDetailViewController: UIViewController {

@IBOutlet weak var basicInfoUIView: UIView!

override func viewDidLoad() {
super.viewDidLoad()

basicInfoUIView.backgroundColor = UIColor.init(displayP3Red: 22, green: 22, blue: 22, alpha: 0.5)
}
}

我希望每个部分 (UIView) 都是深灰色,但它们都是透明的,因此可以看到 ScrollView 的背景颜色。

最佳答案

UIStackView 不允许更改背景颜色:

The UIStackView is a nonrendering subclass of UIView; that is, it does not provide any user interface of its own. Instead, it just manages the position and size of its arranged views. As a result, some properties (like backgroundColor) have no effect on the stack view. Similarly, you cannot override layerClass, draw(:), or draw(:in:).

(来自 UIStackView)

一个简单的解决方法是在堆栈 View 后面添加另一个 UIView,设置约束以匹配堆栈 View 的位置和大小(等于顶部、左侧、右侧、底部)并更改背景颜色的观点。

关于ios - 如何在 UIStackView 中设置 UIView 的背景颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54273884/

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