在仅变换层中更改 属性 contentsGravity,将无效

changing property contentsGravity in transform-only layer, will have no effect

我开始创建一个非常简单的井字游戏。 主要目标是使视图与所有 iOS 设备的所有屏幕尺寸成比例。 所以我将图像放在 ViewController 上,使其全屏显示,然后将其放入 Stack View 中。我已将此 Stack View 0 的约束添加到所有方面。 当我 运行 模拟器时,一切看起来都很好。但是我在控制台面板中收到一条消息。这是什么意思?

看来你做的完全正确。

但是,我想知道为什么您选择将图像视图放入堆栈视图中,而您可以在没有堆栈视图的情况下轻松固定侧面。我是堆栈视图的忠实粉丝,但它们在任何地方都没有意义。除非您打算添加新视图并调整您的 ticktactoe 板的大小,否则我可能不会使用它。

这可能是因为您更改了 StackView 的模式属性:

当我将模式设置为 Aspect Fit 时收到此警告。

UIStackView 上的任何层更改都将导致此警告。正如警告指出的那样,UIStackView 是一个 仅变换层 ,它与 UIView 略有不同。根据文档:

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, drawRect:, or drawLayer:inContext:.

关于此的更多信息 here

它可能不会指出 OP 问题的确切来源,但希望它能阐明为什么 UIStackView 行为不一样并且不应与 UIView 混淆。

对于需要的人:我在 StackView 中将 clipToBounds 设置为 false。