在仅变换图层中更改属性contentsGravity将不起作用

时间:2015-10-17 10:50:23

标签: ios xcode ios9 xcode7 uistackview

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

screenshot

4 个答案:

答案 0 :(得分:113)

可能会发生这种情况,因为您更改了StackView的Mode属性:

enter image description here

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

答案 1 :(得分:54)

UIStackView上的任何图层更改都会导致此警告。警告指出UIStackView仅变换图层,它与UIView略有不同。根据文件:

  

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

有关此here的详情。

它可能没有指出OP问题的确切来源,但希望它能说明UIStackView行为不同的原因,不应与UIView混淆。

答案 2 :(得分:3)

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

答案 3 :(得分:2)

看起来你所做的完全正确。

但是,我想知道为什么你选择将你的imageview放入一个stackview,而你可以在没有stackview的情况下轻松地固定两侧。我是stackviews的忠实粉丝,但他们无处不在。除非您计划添加新视图并调整ticktactoe板的大小,否则我可能不会使用它。