ios-更改属性contents仅转换层中的重力,将具有n

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

screenshot

Alex Belke asked 2020-01-13T03:50:37Z
4个解决方案
124 votes

发生这种情况是因为您更改了StackView的Mode属性:

enter image description here

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

Lubos Ilcik answered 2020-01-13T03:50:59Z
62 votes

UIStackView上的任何层更改都会导致此警告。 如警告所指出,UIView是仅转换层,与UIView略有不同。

UIStackView是UIView的非呈现子类。 也就是说,它确实   不提供自己的任何用户界面。 相反,它只是管理   排列视图的位置和大小。 结果,一些   属性(例如backgroundColor)对堆栈视图没有影响。   同样,您不能覆盖layerClass,drawRect:或   drawLayer:inContext:。

在这里更多。

它可能没有指出OP问题的确切根源,但希望它将阐明为什么UIStackView的行为不相同,并且不应与UIView混淆。

victor.vasilica answered 2020-01-13T03:51:34Z
3 votes

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

Rafaela Lourenço answered 2020-01-13T03:51:54Z
2 votes

看来您所做的完全正确。

但是,我想知道为什么您选择将imageview放到stackview中,而无需使用stackview就可以轻松固定侧面。 我是stackviews的忠实拥护者,但并非到处都没有意义。 除非您打算添加新视图并调整节拍板的尺寸,否则我可能不会使用它。

Rob Norback answered 2020-01-13T03:52:18Z
translate from https://stackoverflow.com:/questions/33185720/changing-property-contentsgravity-in-transform-only-layer-will-have-no-effect